## 4.7. Invoking the Shell

The command interpreter for the Bourne shell (`sh`) or the Korn shell (`ksh`) can be invoked as follows:

>     sh   [options]  [arguments]

>     ksh  [options]  [arguments]

`ksh` and `sh` can execute commands from a terminal, from a file (when the first argument is an executable script), or from standard input (if no arguments remain or if `-s` is specified). `ksh` and `sh` automatically print prompts if standard input is a terminal, or if `-i` is given on the command line.

Arguments
  Arguments are assigned in order to the positional parameters `$1`, `$2`, etc. If array assignment is in effect (`-A` or `+A`), arguments are assigned as array elements. If the first argument is an executable script, commands are read from it, and the remaining arguments are assigned to `$1`, `$2`, etc.
Options
  `-c` `str`
    Read commands from string str.
  `-D`
    Print all `$"..."` strings in the program. `ksh93` only.
  `-i`
    Create an interactive shell (prompt for input).
  `-I` `file`
    Create a cross-reference database for variable and command definitions and references. May not be compiled in. `ksh93` only.
  `-p`
    Start up as a privileged user (Bourne shell: don't set the effective user and group IDs to those of the real user and group IDs. Korn shell: don't process `$HOME/.profile`).
  `-r`
    Create a restricted shell (same as `rksh` or `rsh`).
  `-s`
    Read commands from standard input; output from built-in commands goes to file descriptor 1; all other shell output goes to file descriptor 2.

The remaining options to `sh` and `ksh` are listed under the `set` built-in command.

Copyright © 2003 O'Reilly & Associates. All rights reserved.