When mutating a command like "cd X; ./cmd" to add the run_under
arguments (for example "taskset -c 1"), the mutated command needs to
maintain the "cd X;" part in the output command prefix:
"cd X; taskset -c 1 ./cmd"
If we don't do this, the mutated command cannot be parsed.
Use shellcommand.wrap() to mutate the command instead of string
concatenation, since shellcommand knows how to handle the
"cd X; ..".
This looks like it can fit into a single line.
You should play it safe and abort if run_under_cmd has any of the stdin, stdout, stderr, workdir, envvars properties set because they will get lost here.