Execute an external command.
Takes the command name and arguments.
You may prefer using cmd instead, which is a variadic argument version
of this function.
stdout and stderr are collected. The stdout is returned as
a result of run, and complete stderr output is available after the fact using
lastStderr. If the output does not end with a newline, it is automatically added.
All of the stdout output will be loaded into memory.
You can avoid this if you don't need stdout by using run_,
If you want to avoid the memory and need to process the output then use runFoldLines or runHandle or runHandles.
By default shell characters are escaped and
the command name is a name of a program that can be found via PATH.
Shelly will look through the PATH itself to find the command.
When escaping is set to False, shell characters are allowed.
Since there is no longer a guarantee that a single program name is
given, Shelly cannot look in the PATH for it.
a PATH modified by setenv is not taken into account when finding the exe name.
Instead the original Haskell program PATH is used.
On a Posix system the env command can be used to make the setenv PATH used when escaping is set to False. env echo hello instead of echo hello.