The DoCommand.pm sub added ":\n" to the beginning to force the Bourne
shell interpreter. This is necessary for some cases where an
interpreter is not otherwise specified.

I see why you did it -- you want the ability to add your own
interpreter in &shell_script(). Why not either make a parameter to
add the ":\n" or not, or better yet, have DoCommand.pm analyze the
beginning of the string and if it contains "^:\n" or "^#!", then don't
add anything. But if it doesn't contain either of those, then prefix
it with ":\n".

How does that sound?

Also, is "&shell_script()" a good name? If you can specify your own
interpreter, it might not be a shell script. How about &executable()?