sh --help notes: GNU bash, version 2.04.0(1)-release-(i686-pc-msys) Usage: /mingw/BIN/SH [GNU long option] [option] ... /mingw/BIN/SH [GNU long option] [option] script-file ... GNU long options: --debug --dump-po-strings --dump-strings --help --login --noediting --noprofile --norc --posix --rcfile --restricted --verbose --version --wordexp Shell options: -irsD or -c command (invocation only) -abefhkmnptuvxBCHP or -o option Type `/mingw/BIN/SH -c "help set"' for more information about shell options. Type `/mingw/BIN/SH -c help' for more information about shell builtin commands. Use the `bashbug' command to report bugs. GNU bash, version 2.04.0(1)-release (i686-pc-msys) sh -c help notes: These shell commands are defined internally. Type `help' to see this list. Type `help name' to find out more about the function `name'. Use `info bash' to find out more about the shell in general. A star (*) next to a name means that the command is disabled. %[DIGITS | WORD] [&] . filename : [ arg... ] alias [-p] [name[=value] ... ] bg [job_spec] bind [-lpvsPVS] [-m keymap] [-f fi break [n] builtin [shell-builtin [arg ...]] case WORD in [PATTERN [| PATTERN]. cd [-PL] [dir] command [-pVv] command [arg ...] compgen [-abcdefjkvu] [-A action] complete [-abcdefjkvu] [-pr] [-A a continue [n] declare [-afFrxi] [-p] name[=value dirs [-clpv] [+N] [-N] disown [-h] [-ar] [jobspec ...] echo [-neE] [arg ...] enable [-pnds] [-a] [-f filename] eval [arg ...] exec [-cl] [-a name] file [redirec exit [n] export [-nf] [name ...] or export false fc [-e ename] [-nlr] [first] [last fg [job_spec] for NAME [in WORDS ... ;] do COMMA function NAME { COMMANDS ; } or NA getopts optstring name [arg] hash [-r] [-p pathname] [name ...] help [-s] [pattern ...] history [-c] [-d offset] [n] or hi if COMMANDS; then COMMANDS; [ elif jobs [-lnprs] [jobspec ...] or job kill [-s sigspec | -n signum | -si let arg [arg ...] local name[=value] ... logout popd [+N | -N] [-n] printf format [arguments] pushd [dir | +N | -N] [-n] pwd [-PLW] read [-ers] [-t timeout] [-p promp readonly [-anf] [name ...] or read return [n] select NAME [in WORDS ... ;] do CO set [--abefhkmnptuvxBCHP] [-o opti shift [n] shopt [-pqsu] [-o long-option] opt source filename suspend [-f] test [expr] time [-p] PIPELINE times trap [arg] [signal_spec ...] or tr true type [-apt] name [name ...] typeset [-afFrxi] [-p] name[=value ulimit [-SHacdflmnpstuv] [limit] umask [-p] [-S] [mode] unalias [-a] [name ...] unset [-f] [-v] [name ...] until COMMANDS; do COMMANDS; done variables - Some variable names an wait [n] while COMMANDS; do COMMANDS; done { COMMANDS ; } sh -c "help set" notes (researching -up): set: set [--abefhkmnptuvxBCHP] [-o option] [arg ...] -a Mark variables which are modified or created for export. -b Notify of job termination immediately. -e Exit immediately if a command exits with a non-zero status. -f Disable file name generation (globbing). -h Remember the location of commands as they are looked up. -i Force the shell to be an "interactive" one. Interactive shells always read `~/.bashrc' on startup. -k All assignment arguments are placed in the environment for a command, not just those that precede the command name. -m Job control is enabled. -n Read commands but do not execute them. -o option-name Set the variable corresponding to option-name: allexport same as -a braceexpand same as -B emacs use an emacs-style line editing interface errexit same as -e hashall same as -h histexpand same as -H history enable command history ignoreeof the shell will not exit upon reading EOF interactive-comments allow comments to appear in interactive commands keyword same as -k monitor same as -m noclobber same as -C noexec same as -n noglob same as -f notify same as -b nounset same as -u onecmd same as -t physical same as -P posix change the behavior of bash where the default operation differs from the 1003.2 standard to match the standard privileged same as -p verbose same as -v vi use a vi-style line editing interface xtrace same as -x -p Turned on whenever the real and effective user ids do not match. Disables processing of the $ENV file and importing of shell functions. Turning this option off causes the effective uid and gid to be set to the real uid and gid. -t Exit after reading and executing one command. -u Treat unset variables as an error when substituting. -v Print shell input lines as they are read. -x Print commands and their arguments as they are executed. -B the shell will perform brace expansion -C If set, disallow existing regular files to be overwritten by redirection of output. -H Enable ! style history substitution. This flag is on by default. -P If set, do not follow symbolic links when executing commands such as cd which change the current directory. Using + rather than - causes these flags to be turned off. The flags can also be used upon invocation of the shell. The current set of flags may be found in $-. The remaining n ARGs are positional parameters and are assigned, in order, to $1, $2, .. $n. If no ARGs are given, all shell variables are printed. perl --help notes: Usage: /usr/bin/PERL [switches] [--] [programfile] [arguments] -0[octal] specify record separator (\0, if no argument) -a autosplit mode with -n or -p (splits $_ into @F) -C enable native wide character system interfaces -c check syntax only (runs BEGIN and CHECK blocks) -d[:debugger] run program under debugger -D[number/list] set debugging flags (argument is a bit mask or alphabets) -e 'command' one line of program (several -e's allowed, omit programfile) -F/pattern/ split() pattern for -a switch (//'s are optional) -i[extension] edit <> files in place (makes backup if extension supplied) -Idirectory specify @INC/#include directory (several -I's allowed) -l[octal] enable line ending processing, specifies line terminator -[mM][-]module execute `use/no module...' before executing program -n assume 'while (<>) { ... }' loop around program -p assume loop like -n but print line also, like sed -P run program through C preprocessor before compilation -s enable rudimentary parsing for switches after programfile -S look for programfile using PATH environment variable -T enable tainting checks -t enable tainting warnings -u dump core after parsing program -U allow unsafe operations -v print version, subversion (includes VERY IMPORTANT perl info) -V[:variable] print configuration summary (or a single Config.pm variable) -w enable many useful warnings (RECOMMENDED) -W enable all warnings -X disable all warnings -x[directory] strip off text before #!perl line and perhaps cd to directory -- My notes Dies with: sh /c/mozilla-source/mozilla/build/cygwin-wrapper -up /c/CYGWIN/BIN/perl -Ic:/mozilla-source/mozilla/config c:/mozilla-source/mozilla/config/bdate.pl build_number /c/mozilla-source/mozilla/build/cygwin-wrapper: print: command not found make[2]: *** [build_number] Error 1 make[2]: Leaving directory `/c/mozilla-source/mozilla/obj-/config' MAKE[1]: *** [default] Error 2 MAKE[1]: Leaving directory `/c/mozilla-source/mozilla/obj-' MAKE: *** [build] Error 2GNU bash, version 2.04.0(1)-release (i686-pc-msys) First line of /build/cygwin-wrapper: #!/bin/sh C:\Program Files\Mozilla\patched\bin\chrome>sh SH-2.04$ print "hi" SH: print: command not found SH-2.04$ exit exit PATH=C:\PROGRA~1\MOZILLA\WINTOOLS\BIN;C:\PROGRA~1\MINGW\BIN;C:\CYGWIN\BIN;C:\PER L\BIN;C:\WINDOWS;C:\WINDOWS;C:\WINDOWS\COMMAND Could there be something wrong with sh? Look above: there's a printf command, but not a print command.