|
The API exposed by Com is command -> [arguments] -> alias -> timeout -> Com.
Since the command and arguments are separated like this, one would assume that
the command is run "safely": The arguments are already separated in the arg
list, so the command should be run without passing through a shell, which
ensures that stray shell metacharacters in the arguments don't mess up
anything.
However, previous versions simply joined the command with its arguments into
one string and then passed that string into a shell to run. This is
counter-intuitive given the seemingly "safe" API exposed by Com, so using
runInteractiveProcess instead is the correct implementation.
Note that users may still run commands that need shells by being explicit about
it, like this:
Run Com "/bin/bash" ["-c", "command | nextCommand & parallelCommand"] 60
|