Shell
After the character-device driver processes what you type, the command line is passed to a command interpreter or shell.
The default shell is sh, which under QNX OS is a link to the Korn shell, ksh. There are other shells available, including small ones that are suitable for situations with limited memory:
- esh
- Embedded shell.
- fesh
- Fat embedded shell; similar to esh, but with additional builtin commands.
- uesh
- Micro-embedded shell with a subset of esh's functionality.
Here's a brief comparison of the features that the shells support:
Feature | uesh | esh | fesh | ksh |
---|---|---|---|---|
Interactive mode | Yes | Yes | Yes | Yes |
Script files | Yes | Yes | Yes | Yes |
Redirection | Yes | Yes | Yes | Yes |
Pipes | — | Yes | Yes | Yes |
Aliases | — | Yes | Yes | Yes |
Filename expansion | — | Yes | Yes | Yes |
Parameter substitution | — | Yes | Yes | Yes |
Compound commands | — | — | — | Yes |
Command or arithmetic substitution | — | — | — | Yes |
Command and filename completion | — | — | — | Yes |
Tilde expansion | — | — | — | Yes |
Brace expansion | — | — | — | Yes |
Coprocesses | — | — | — | Yes |
Functions | — | — | — | Yes |
emacs interactive command-line editing | — | — | — | Yes |
Job control | — | — | — | Yes |
The small shells have fewer builtin commands than ksh has. For more information about these shells, see the Utilities Reference.
In general terms, the shell breaks the command line into tokens, parses them, and invokes the program or programs that you asked for. The specific details depend on the shell that you're using; this section describes what ksh does.
As you type, the Korn shell immediately processes the keys that you use to edit the command line, including completing commands and filenames. When you press Enter, the shell processes the command line:
- The shell breaks the command line into tokens that are delimited by whitespace or by the special characters that the shell processes.
- As it forms words, the shell builds commands:
- simple commands, usually programs that you want to run (e.g., less my_file)
- compound commands, including reserved words, grouping constructs, and function definitions
You can also specify multiple commands on the command line.
- The shell processes aliases recursively.
- The shell does any required substitutions, including parameters, commands, and filenames.
- The shell does any redirection.
- The shell matches the remaining commands, in this order: special builtins; functions; regular builtins; executables.
To override the order in which the shell processes the command line, you use quoting to change the meaning of the special characters.
The sections that follow give the briefest descriptions of these steps—ksh is a very powerful command interpreter! For more details, see its entry in the Utilities Reference.