home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-11-06 | 83.0 KB | 1,585 lines |
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- NNNNAAAAMMMMEEEE
- sh, rsh - shell, the standard/restricted command programming
- language
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- sssshhhh [ ----aaaacccceeeeffffhhhhiiiikkkknnnnmmmmrrrrssssttttuuuuvvvvxxxx0000 ] [ args ]
- rrrrsssshhhh [ ----aaaacccceeeeffffhhhhiiiikkkknnnnmmmmrrrrssssttttuuuuvvvvxxxx0000 ] [ args ]
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _S_h is a command programming language that executes commands
- read from a terminal or a file. _R_s_h is a restricted version
- of the standard command interpreter _s_h; it is used to set up
- login names and execution environments whose capabilities
- are more controlled than those of the standard shell. See
- _I_n_v_o_c_a_t_i_o_n below for the meaning of arguments to the shell.
-
- DDDDeeeeffffiiiinnnniiiittttiiiioooonnnnssss
- A _b_l_a_n_k is a tab or a space. A _n_a_m_e is a sequence of
- letters, digits, or underscores beginning with a letter or
- underscore. A _p_a_r_a_m_e_t_e_r is a name, a digit, or any of the
- characters ****, @@@@, ####, ????, ----, $$$$, and !!!!.
-
- CCCCoooommmmmmmmaaaannnnddddssss
- A _s_i_m_p_l_e-_c_o_m_m_a_n_d is a sequence of non-blank _w_o_r_d_s separated
- by _b_l_a_n_k_s. The first word specifies the name of the command
- to be executed. Except as specified below, the remaining
- words are passed as arguments to the invoked command. The
- command name is passed as argument 0 (see _e_x_e_c(2)). The
- _v_a_l_u_e of a simple-command is its exit status if it
- terminates normally, or (octal) 200+_s_t_a_t_u_s if it terminates
- abnormally (see _s_i_g_n_a_l(2) for a list of status values).
-
- A _p_i_p_e_l_i_n_e is a sequence of one or more _c_o_m_m_a_n_d_s separated
- by |||| (or, for historical compatibility, by ^^^^). The standard
- output of each command but the last is connected by a
- _p_i_p_e(2) to the standard input of the next command. Each
- command is run as a separate process; the shell waits for
- the last command to terminate. The exit status of a
- pipeline is the exit status of the last command.
-
- A _l_i_s_t is a sequence of one or more pipelines separated by
- ;;;;, &&&&&&&&, or ||||||||, and optionally terminated by ;;;;. Of these
- three symbols, ;;;; has a lower precedence than that of &&&&&&&& and
- ||||||||. The symbols &&&&&&&& and |||||||| also have equal precedence. A
- semicolon (;;;;) causes sequential execution of the preceding
- pipeline. The symbol &&&&&&&& (||||||||) causes the _l_i_s_t following it
- to be executed only if the preceding pipeline returns a zero
- (non-zero) exit status. An arbitrary number of new-lines
- may appear in a _l_i_s_t, instead of semicolons, to delimit
- commands.
-
- A _c_o_m_m_a_n_d is either a simple-command or one of the
-
-
-
- Page 1 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- following. Unless otherwise stated, the value returned by a
- command is that of the last simple-command executed in the
- command.
-
- ffffoooorrrr _n_a_m_e [ iiiinnnn _w_o_r_d ... ] ddddoooo _l_i_s_t ddddoooonnnneeee
- Each time a ffffoooorrrr command is executed, _n_a_m_e is set to the
- next _w_o_r_d taken from the iiiinnnn _w_o_r_d list. If iiiinnnn _w_o_r_d ...
- is omitted, then the ffffoooorrrr command executes the ddddoooo _l_i_s_t
- once for each positional parameter that is set (see
- _P_a_r_a_m_e_t_e_r _S_u_b_s_t_i_t_u_t_i_o_n below). Execution ends when
- there are no more words in the list.
- ccccaaaasssseeee _w_o_r_d iiiinnnn [ _p_a_t_t_e_r_n [ | _p_a_t_t_e_r_n ] ... )))) _l_i_s_t ;;;;;;;; ] ... eeeessssaaaacccc
- A ccccaaaasssseeee command executes the _l_i_s_t associated with the
- first _p_a_t_t_e_r_n that matches _w_o_r_d. The form of the
- patterns is the same as that used for file-name
- generation (see _F_i_l_e _N_a_m_e _G_e_n_e_r_a_t_i_o_n) except that a
- slash, a leading dot, or a dot immediately following a
- slash need not be matched explicitly, and the match is
- case sensitive.
- iiiiffff _l_i_s_t tttthhhheeeennnn _l_i_s_t [ eeeelllliiiiffff _l_i_s_t tttthhhheeeennnn _l_i_s_t ] ... [ eeeellllsssseeee _l_i_s_t ] ffffiiii
- The _l_i_s_t following iiiiffff is executed and, if it returns a
- zero exit status, the _l_i_s_t following the first tttthhhheeeennnn is
- executed. Otherwise, the _l_i_s_t following eeeelllliiiiffff is
- executed and, if its value is zero, the _l_i_s_t following
- the next tttthhhheeeennnn is executed. Failing that, the eeeellllsssseeee _l_i_s_t
- is executed. If no eeeellllsssseeee _l_i_s_t or tttthhhheeeennnn _l_i_s_t is executed,
- then the iiiiffff command returns a zero exit status.
- wwwwhhhhiiiilllleeee _l_i_s_t ddddoooo _l_i_s_t ddddoooonnnneeee
- A wwwwhhhhiiiilllleeee command repeatedly executes the wwwwhhhhiiiilllleeee _l_i_s_t and,
- if the exit status of the last command in the list is
- zero, executes the ddddoooo _l_i_s_t; otherwise the loop
- terminates. If no commands in the ddddoooo _l_i_s_t are
- executed, then the wwwwhhhhiiiilllleeee command returns a zero exit
- status; uuuunnnnttttiiiillll may be used in place of wwwwhhhhiiiilllleeee to negate
- the loop termination test.
- ((((_l_i_s_t))))
- Execute _l_i_s_t in a sub-shell. The shell creates a new
- environment in which to execute the _l_i_s_t, but does not
- fork a sub-shell as a Unix system would. The original
- environment is restored on completion.
- {{{{ _l_i_s_t;;;; }}}}
- _l_i_s_t is simply executed.
- _n_a_m_e (((()))) {{{{ _l_i_s_t;;;; }}}}
- Define a function which is referenced by _n_a_m_e. The
- body of the function is the _l_i_s_t of commands between {{{{
- and }}}}. Execution of functions is described below (see
- _E_x_e_c_u_t_i_o_n).
-
- The following words are only recognized as the first word of
- a command and when not quoted:
-
- iiiiffff tttthhhheeeennnn eeeellllsssseeee eeeelllliiiiffff ffffiiii ccccaaaasssseeee eeeessssaaaacccc ffffoooorrrr wwwwhhhhiiiilllleeee uuuunnnnttttiiiillll ddddoooo ddddoooonnnneeee {{{{ }}}}
-
-
-
- Page 2 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- CCCCoooommmmmmmmeeeennnnttttssss
- A word beginning with #### causes that word and all the
- following characters up to a new-line to be ignored.
-
- TTTTiiiillllddddeeee SSSSuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn
- Each word is checked to see if it begins with an unquoted~~~~.
- If it is, the ~~~~ is replaced by the value of the HHHHOOOOMMMMEEEE
- parameter.
-
- CCCCoooommmmmmmmaaaannnndddd SSSSuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn
- The standard output from a command enclosed in parenthesis
- preceded by a dollar sign ($$$$(((())))), or in a pair of grave
- accents (````````) may be used as part or all of a word; trailing
- new-lines are removed.
-
- PPPPaaaarrrraaaammmmeeeetttteeeerrrr SSSSuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn
- The character $$$$ is used to introduce substitutable
- _p_a_r_a_m_e_t_e_r_s. There are two types of parameters, positional
- and keyword. If _p_a_r_a_m_e_t_e_r is a digit, it is a positional
- parameter. Positional parameters may be assigned values by
- sssseeeetttt. Keyword parameters (also known as variables) may be
- assigned values by writing:
-
- _n_a_m_e = _v_a_l_u_e [ _n_a_m_e = _v_a_l_u_e ] ...
-
- Pattern-matching is not performed on _v_a_l_u_e. There cannot be
- a function and a variable with the same _n_a_m_e.
-
- $$$${{{{_p_a_r_a_m_e_t_e_r}}}}
- The value, if any, of the _p_a_r_a_m_e_t_e_r is substituted.
- The braces are required only when _p_a_r_a_m_e_t_e_r is followed
- by a letter, digit, or underscore that is not to be
- interpreted as part of its name. If _p_a_r_a_m_e_t_e_r is **** or
- @@@@, all the positional parameters, starting with $$$$1111, are
- substituted (separated by spaces). Parameter $$$$0000 is set
- from argument zero when the shell is invoked.
- $$$${{{{####_p_a_r_a_m_e_t_e_r}}}}
- If _p_a_r_a_m_e_t_e_r is **** or @@@@, the number of positional
- parameters is substituted. Otherwise, the length of
- the value of the _p_a_r_a_m_e_t_e_r is substituted.
- $$$${{{{_p_a_r_a_m_e_t_e_r::::----_w_o_r_d}}}}
- If _p_a_r_a_m_e_t_e_r is set and is non-null, substitute its
- value; otherwise substitute _w_o_r_d.
- $$$${{{{_p_a_r_a_m_e_t_e_r::::====_w_o_r_d}}}}
- If _p_a_r_a_m_e_t_e_r is not set or is null set it to _w_o_r_d; the
- value of the parameter is substituted. Positional
- parameters may not be assigned to in this way.
- $$$${{{{_p_a_r_a_m_e_t_e_r::::????_w_o_r_d}}}}
- If _p_a_r_a_m_e_t_e_r is set and is non-null, substitute its
- value; otherwise, print _w_o_r_d and exit from the shell.
- If _w_o_r_d is omitted, the message ``parameter null or not
- set'' is printed.
-
-
-
- Page 3 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- $$$${{{{_p_a_r_a_m_e_t_e_r::::++++_w_o_r_d}}}}
- If _p_a_r_a_m_e_t_e_r is set and is non-null, substitute _w_o_r_d;
- otherwise substitute nothing.
- $$$${{{{_p_a_r_a_m_e_t_e_r####_p_a_t_t_e_r_n}}}}
- $$$${{{{_p_a_r_a_m_e_t_e_r########_p_a_t_t_e_r_n}}}} If the Shell _p_a_t_t_e_r_n matches the
- beginning of the value of _p_a_r_a_m_e_t_e_r, then the value of
- this substitution is the value of the _p_a_r_a_m_e_t_e_r with
- the matched portion deleted; otherwise the value of
- this _p_a_r_a_m_e_t_e_r is substituted. In the first form the
- smallest matching _p_a_t_t_e_r_n is deleted and in the latter
- form the largest matching _p_a_t_t_e_r_n is deleted.
- $$$${{{{_p_a_r_a_m_e_t_e_r%%%%_p_a_t_t_e_r_n}}}}
- $$$${{{{_p_a_r_a_m_e_t_e_r%%%%%%%%_p_a_t_t_e_r_n}}}} If the Shell _p_a_t_t_e_r_n matches the
- end of the value of _p_a_r_a_m_e_t_e_r, then the value of this
- substitution is the value of the _p_a_r_a_m_e_t_e_r with the
- matched portion deleted; otherwise the value of this
- _p_a_r_a_m_e_t_e_r is substituted. In the first form the
- smallest matching _p_a_t_t_e_r_n is deleted and in the latter
- form the largest matching _p_a_t_t_e_r_n is deleted.
-
- In the above, _w_o_r_d is not evaluated unless it is to be used
- as the substituted string, so that, in the following
- example, ppppwwwwdddd is executed only if dddd is not set or is null:
-
- echo ${d:-`pwd`}
-
- If the colon (::::) is omitted from the above expressions, the
- shell only checks whether _p_a_r_a_m_e_t_e_r is set or not (_I_t _i_s _n_o_t
- _c_l_e_a_r _w_h_a_t _t_h_i_s _m_e_a_n_s).
-
- The following parameters are automatically set by the shell:
- #### The number of positional parameters in decimal.
- ---- Flags supplied to the shell on invocation or by
- the sssseeeetttt command.
- ???? The decimal value returned by the last
- synchronously executed command.
- $$$$ The process number of this shell.
- !!!! The process number of the last background command
- invoked.
- ~~~~ The shell reserves all variables beginning with a
- ~~~~ for its own internal use and these variables
- cannot be accessed by the user.
-
- The following parameters are used by the shell:
- CCCCDDDDPPPPAAAATTTTHHHH
- The search path for the _c_d command. (Note that
- because a colon is used by MSDOS to indicate a
- drive, a semi-colon is used to separate the path
- names instead of a colon - this implies that the
- CDPATH variable must be set using single or double
- quotes to surround the value).
- CCCCOOOOMMMMSSSSPPPPEEEECCCC
-
-
-
- Page 4 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- When the shell has to process an MSDOS ._b_a_t file,
- it expects the file indicated by the value of this
- environment variable to be an executable program
- capable of processing the MSDOS ._b_a_t file. The
- program is invoked with the arguments ////cccc
- bbbbaaaatttt____ffffiiiilllleeee____nnnnaaaammmmeeee.
- EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____LLLLIIIINNNNEEEE
- This parameter defines a file containing a list of
- command which can accept an Extended Command Line
- using the indirect command file character @@@@. When
- a command which can process the Extended Command
- Line finds a parameter starting with a @@@@ in the
- command list, treats the rest of the parameter as
- a file and reads the parameters from that file.
- Examples of this functionality include the
- Standard LLLLiiiinnnnkkkkeeeerrrr and LLLLiiiibbbbrrrraaaarrrriiiiaaaannnn. The filename
- defined by EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____LLLLIIIINNNNEEEE contains a list of
- command (including the .exe or .com extension)
- separated by a newlines. If the command is in
- upper case, the file name on the command line is
- set up with backslashes as the directory
- separator. Otherwise, slashes (Unix style) are
- used. This functionality allows the user to get
- round the 127 byte command line length limit of
- MSDOS.
- HHHHIIIISSSSTTTTFFFFIIIILLLLEEEE
- The file where command history is saved across
- login sessions. The default value is
- $$$$HHHHOOOOMMMMEEEE////hhhhiiiissssttttoooorrrryyyy....sssshhhh.
- HHHHOOOOMMMMEEEE The default argument (home directory) for the _c_d
- command.
- IIIIFFFFSSSS Internal field separators, normally ssssppppaaaacccceeee, ttttaaaabbbb,
- and nnnneeeewwww----lllliiiinnnneeee.
- MMMMAAAAIIIILLLL If this parameter is set to the name of a mail
- file _a_n_d the MMMMAAAAIIIILLLLPPPPAAAATTTTHHHH parameter is not set, the
- shell informs the user of the arrival of mail in
- the specified file.
- MMMMAAAAIIIILLLLCCCCHHHHEEEECCCCKKKK
- This parameter specifies how often (in seconds)
- the shell will check for the arrival of mail in
- the files specified by the MMMMAAAAIIIILLLLPPPPAAAATTTTHHHH or MMMMAAAAIIIILLLL
- parameters. If set to 0, the shell will check
- before each prompt.
- MMMMAAAAIIIILLLLPPPPAAAATTTTHHHH
- A semi-colon (;;;;) separated list of file names. If
- this parameter is set, the shell informs the user
- of the arrival of mail in any of the specified
- files. Each file name can be followed by %%%% and a
- message that will be printed when the modification
- time changes. The default message is "_y_o_u _h_a_v_e
- _m_a_i_l".
- PPPPAAAATTTTHHHH The search path for commands (see _E_x_e_c_u_t_i_o_n
-
-
-
- Page 5 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- below).
- The user may not change PPPPAAAATTTTHHHH if executing under
- _r_s_h. (Note that because a colon is used by MSDOS
- to indicate a drive, a semi-colon is used to
- separate the path names instead of a colon - this
- implies that the PATH variable must be set using
- single or double quotes to surround the value).
- The Shell automatically converts Unix format PPPPAAAATTTTHHHH
- assignments to MSDOS format when appropriate. A
- assignment is converted if there are no semi-
- colons, no backslashes and one or more colons. If
- there is only one colon, it must not be the second
- character of the new value.
- PPPPSSSS1111 Primary prompt string, by default ``$$$$ ''.
- PPPPSSSS2222 Secondary prompt string, by default ``>>>> ''.
- SSSSHHHHEEEELLLLLLLL
- When the shell is invoked, it scans the
- environment (see _E_n_v_i_r_o_n_m_e_n_t below) for this name.
- If it is found and there is an 'r' in the file
- name part of its value, the shell becomes a
- restricted shell. The shell also uses this
- variable to decide which program to spawn to
- interpret shell scripts (see _E_x_e_c_u_t_i_o_n below).
- TTTTMMMMPPPP The location of temporary files created by the
- shell. If this variable is not defined, the Shell
- uses the HHHHOOOOMMMMEEEE directory for temporary files.
- Failing that, the root directory of the current
- drive is used.
- The shell gives default values to PPPPAAAATTTTHHHH, PPPPSSSS1111, PPPPSSSS2222, SSSSHHHHEEEELLLLLLLL,
- HHHHOOOOMMMMEEEE and IIIIFFFFSSSS.
-
- BBBBllllaaaannnnkkkk IIIInnnntttteeeerrrrpppprrrreeeettttaaaattttiiiioooonnnn
- After parameter and command substitution, the results of
- substitution are scanned for internal field separator
- characters (those found in IIIIFFFFSSSS) and split into distinct
- arguments where such characters are found. Explicit null
- arguments ("""""""" or '''''''') are retained. Implicit null arguments
- (those resulting from _p_a_r_a_m_e_t_e_r_s that have no values) are
- removed.
- FFFFiiiilllleeee NNNNaaaammmmeeee GGGGeeeennnneeeerrrraaaattttiiiioooonnnn
- Following substitution, each command _w_o_r_d is scanned for the
- characters ****, ???? and [[[[. If one of these characters appears
- the word is regarded as a _p_a_t_t_e_r_n. The word is replaced
- with alphabetically sorted file names that match the
- pattern. If no file name is found that matches the pattern,
- the word is left unchanged. The character .... at the start of
- a file name or immediately following a ////, as well as the
- character //// itself, must be matched explicitly. When
- matching patterns for file names, the shell ignores the case
- of the pattern and the file directory entries. Generated
- file names are always in lower case.
- **** Matches any string, including the null string.
-
-
-
- Page 6 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- ???? Matches any single character.
- [[[[ ............ ]]]]
- Matches any one of the enclosed characters. A
- pair of characters separated by ---- matches any
- character lexically between the pair, inclusive.
- If the first character following the opening ``[''
- is a ````````!!!!'''''''' any character not enclosed is matched.
-
- If the shell has to open or create the file ////ddddeeeevvvv////ttttttttyyyy or
- ////ddddeeeevvvv////nnnnuuuullllllll (which are Unix special files), they are converted
- to the equivalent MSDOS file names (////ddddeeeevvvv////ccccoooonnnn and ////ddddeeeevvvv////nnnnuuuullll
- respectively). Any user programs which could expect
- ////ddddeeeevvvv////ttttttttyyyy or ////ddddeeeevvvv////nnnnuuuullllllll as arguments must do its own mapping
- to the MSDOS equivalents.
-
- QQQQuuuuoooottttiiiinnnngggg
- The following characters have a special meaning to the shell
- and cause termination of a word unless quoted:
-
- ;;;; &&&& (((( )))) |||| ^^^^ <<<< >>>> nnnneeeewwww----lllliiiinnnneeee ssssppppaaaacccceeee ttttaaaabbbb
-
- A character may be _q_u_o_t_e_d (i.e., made to stand for itself)
- by preceding it with a \\\\. The pair \\\\nnnneeeewwww----lllliiiinnnneeee is ignored.
- All characters enclosed between a pair of single quote marks
- (''''''''), except a single quote, are quoted. Inside double
- quote marks (""""""""), parameter and command substitution occurs
- and \\\\ quotes the characters \\\\, ````, """", and $$$$. """"$$$$****"""" is
- equivalent to """"$$$$1111 $$$$2222 ............"""", whereas """"$$$$@@@@"""" is equivalent to
- """"$$$$1111"""" """"$$$$2222"""" .............
-
- PPPPrrrroooommmmppppttttiiiinnnngggg
- When used interactively, the shell prompts with the value of
- PPPPSSSS1111 before reading a command. If at any time a new-line is
- typed and further input is needed to complete a command, the
- secondary prompt (i.e., the value of PPPPSSSS2222) is issued.
-
- Many people like to have the shell provide them with useful
- information in their prompt. To accommodate this, the shell
- recognises special sequences of characters in the values of
- PPPPSSSS1111 and PPPPSSSS2222, and substitutes the appropriate information for
- them. The special sequences and what they signify are:
-
- %%%%dddd Place the current date, in the form DAY DD-MM-YY
- into the prompt.
-
- %%%%eeee Place the current event number (as defined by the
- hhhhiiiissssttttoooorrrryyyy command) into the prompt. If history
- evaluation has been turned off (via hhhhiiiissssttttoooorrrryyyy ----dddd),
- no number will be substituted in (i.e. the %%%%eeee will
- be removed).
-
- %%%%nnnn Place the current working drive into the prompt.
-
-
-
- Page 7 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- %%%%pppp Place the current working directory into the
- prompt.
-
- %%%%tttt Place the current time of day, in the form HH:MM
- into the prompt. The time is on a 24 hour clock,
- i.e. 1:30 in the afternoon will be 13:30.
-
- %%%%vvvv Place the MSDOS version number, in the form MSDOS
- MM:MM into the prompt.
-
- %%%%%%%% Place the character % into the prompt.
-
- \\\\xxxxxxxxxxxx Place the character _\_x_x_x into the prompt. The
- processing of escape sequences is the same as that
- for eeeecccchhhhoooo.
-
- Some of these facilities are of more use than others.
-
- IIIInnnnppppuuuutttt////OOOOuuuuttttppppuuuutttt
- Before a command is executed, its input and output may be
- redirected using a special notation interpreted by the
- shell. The following may appear anywhere in a simple-
- command or may precede or follow a _c_o_m_m_a_n_d and are _n_o_t
- passed on to the invoked command; substitution occurs before
- _w_o_r_d or _d_i_g_i_t is used:
-
- <<<<wwwwoooorrrrdddd Use file _w_o_r_d as standard input (file
- descriptor 0).
- >>>>wwwwoooorrrrdddd Use file _w_o_r_d as standard output (file
- descriptor 1). If the file does not exist it
- is created; otherwise, it is truncated to zero
- length.
- >>>>>>>>wwwwoooorrrrdddd Use file _w_o_r_d as standard output. If the file
- exists output is appended to it (by first
- seeking to the end-of-file); otherwise, the
- file is created.
- <<<<<<<<[----]wwwwoooorrrrdddd The shell input is read up to a line that is
- the same as _w_o_r_d, or to an end-of-file. The
- resulting document becomes the standard input.
- If any character of _w_o_r_d is quoted, no
- interpretation is placed upon the characters
- of the document; otherwise, parameter and
- command substitution occurs, (unescaped)
- \\\\nnnneeeewwww----lllliiiinnnneeee is ignored, and \\\\ must be used to
- quote the characters \\\\, $$$$, ````, and the first
- character of _w_o_r_d. If ---- is appended to <<<<<<<<,
- all leading tabs are stripped from _w_o_r_d and
- from the document.
- <<<<&&&&ddddiiiiggggiiiitttt Use the file associated with file descriptor
- _d_i_g_i_t as standard input. Similarly for the
- standard output using >>>>&&&&ddddiiiiggggiiiitttt.
- <<<<&&&&---- The standard input is closed. Similarly for
-
-
-
- Page 8 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- the standard output using >>>>&&&&----.
- nnnn<<<<>>>>wwwwoooorrrrdddd causes the file _w_o_r_d to be opened on file
- descriptor _n for both reading and writing.
- The file must already exist.
-
- If any of the above is preceded by a digit, the file
- descriptor which will be associated with the file is that
- specified by the digit (instead of the default 0 or 1). For
- example:
-
- ... 2>&1
-
- associates file descriptor 2 with the file currently
- associated with file descriptor 1.
-
- The order in which redirections are specified is
- significant. The shell evaluates redirections left-to-
- right. For example:
-
- ... 1>_x_x_x 2>&1
-
- first associates file descriptor 1 with file _x_x_x. It
- associates file descriptor 2 with the file associated with
- file descriptor 1 (i.e. _x_x_x). If the order of redirections
- were reversed, file descriptor 2 would be associated with
- the terminal (assuming file descriptor 1 had been) and file
- descriptor 1 would be associated with file _x_x_x .
-
- The environment for the execution of a command contains the
- file descriptors of the invoking shell as modified by
- input/output specifications.
-
- Redirection of output is not allowed in the restricted
- shell.
-
- EEEEnnnnvvvviiiirrrroooonnnnmmmmeeeennnntttt
- The _e_n_v_i_r_o_n_m_e_n_t (see _e_n_v_i_r_o_n(5)) is a list of name-value
- pairs that is passed to an executed program in the same way
- as a normal argument list. The shell interacts with the
- environment in several ways. On invocation, the shell scans
- the environment and creates a parameter for each name found,
- giving it the corresponding value. If the user modifies the
- value of any of these parameters or creates new parameters,
- none of these affects the environment unless the eeeexxxxppppoooorrrrtttt
- command is used to bind the shell's parameter to the
- environment (see also sssseeeetttt ----aaaa). A parameter may be removed
- from the environment with the uuuunnnnsssseeeetttt command. The
- environment seen by any executed command is thus composed of
- any unmodified name-value pairs originally inherited by the
- shell, minus any pairs removed by uuuunnnnsssseeeetttt, plus any
- modifications or additions, all of which must be noted in
- eeeexxxxppppoooorrrrtttt commands.
-
-
-
- Page 9 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- The environment for any _s_i_m_p_l_e-_c_o_m_m_a_n_d may be augmented by
- prefixing it with one or more assignments to parameters.
- Thus:
-
- TERM=450 cmd args and
- (export TERM; TERM=450; cmd args)
-
- are equivalent (as far as the execution of _c_m_d is
- concerned).
-
- If the ----kkkk flag is set, _a_l_l keyword arguments are placed in
- the environment, even if they occur after the command name.
- The following first prints aaaa====bbbb cccc and cccc:
-
- echo a=b c
- set -k
- echo a=b c
-
- SSSSiiiiggggnnnnaaaallllssss
- The INTERRUPT and QUIT signals for an invoked command are
- ignored if the command is followed by &&&&; otherwise signals
- have the values inherited by the shell from its parent, with
- the exception of signal 11 (but see also the ttttrrrraaaapppp command
- below).
-
- HHHHiiiissssttttoooorrrryyyy
- When reading input from an interactive terminal, a ``!'' at
- the start of a line signals to the shell that it should
- attempt to perform a history subsitution. A history
- subsitution is a short-hand method which allows the user to
- recall a previous command for execution or editing. The
- recalled command is placed in the command line for editing
- or passing to the rest of the shell for normal processing.
- A history substitution takes the form:
-
- !!!! [ ! | _s_t_r | _n_u_m ] _t_e_r_m_i_n_a_t_o_r
-
- !!!!!!!! will place the previous command in the command line.
- !!!!_n_u_m will place the history command with the specified
- number in the command line. !!!!_s_t_r will find the most recent
- command line that started with the characters in _s_t_r.
-
- The _t_e_r_m_i_n_a_t_o_r determines what action is performed after the
- history line has been found. If the original history
- command is entered using the <<<<rrrreeeettttuuuurrrrnnnn>>>> key, the new command
- line is passed directly to the shell. If the <<<<eeeennnndddd>>>> key is
- pressed, the new command line can be edited in the manner
- described below.
-
- CCCCoooommmmmmmmaaaannnndddd LLLLiiiinnnneeee EEEEddddiiiittttiiiinnnngggg
- When reading input from an interactive terminal, certain
- keystrokes allow the current input line to be edited. The
-
-
-
- Page 10 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- following keystrokes corresponding to the following
- functions are defined in the initialisation file sssshhhh....iiiinnnniiii.
- The keywords in the initialisation file which provide the
- functions are listed below:
-
- RRRRiiiigggghhhhtttt
- Move the cursor right one character
-
- WWWWoooorrrrddddRRRRiiiigggghhhhtttt
- Move the cursor right one word
-
- LLLLeeeefffftttt Move the cursor left one character
-
- WWWWoooorrrrddddLLLLeeeefffftttt
- Move the cursor left one word
-
- PPPPrrrreeeevvvviiiioooouuuussss
- Get the previous command from the history file
-
- NNNNeeeexxxxtttt Get the next command from the history file
-
- IIIInnnnsssseeeerrrrtttt
- Toggle insert/overwrite mode (note the shape of the
- cursor changes to indicate the current mode)
-
- DDDDeeeelllleeeetttteeeeRRRRiiiigggghhhhtttt
- Delete the current character unless the cursor is at
- the end of line when no action is taken
-
- SSSSttttaaaarrrrtttt
- Move the cursor to the start of the command
-
- CCCCoooommmmpppplllleeeetttteeee
- Attempt to complete the filename. The shell attempts
- to complete the file name at the current cursor
- position. The file name is delimited by white space
- characters. If the shell is unable to complete the
- file name (ie no match can be found in the appropriate
- directory), the bell is rung. If a single match is
- found, the new file name is displayed. If multiple
- matches are found, the file name is replaced by the
- longest non-unique part of the file name and the bell
- is rung.
-
- EEEEnnnndddd Move the cursor to the end of the command, unless the
- first character of the command is a !!!!, in which case
- the appropriate history search is done. The cursor is
- placed at the end of the command line.
-
- FFFFlllluuuusssshhhh
- Delete to the end of the line
-
-
-
-
- Page 11 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- SSSSccccaaaannnnBBBBaaaacccckkkkwwwwaaaarrrrdddd
- Search backwards from the current history command for
- the next match against the last history request or the
- string currently in the command line if there has been
- no previous history request.
-
- SSSSccccaaaannnnFFFFoooorrrreeeewwwwaaaarrrrdddd
- Search forewards from the current history command for
- the next match against the last history request or the
- string currently in the command line if there has been
- no previous history request.
-
- CCCClllleeeeaaaarrrr
- Erase the complete line.
-
- DDDDiiiirrrreeeeccccttttoooorrrryyyy
- Display the file name list matching the partially
- entered file name under the cursor. If no matches are
- found the bell is rung. To display the whole
- directory, enter the directory name followed by a slash
- ////. After the directory listing has been displayed, the
- entered command line is redisplayed.
-
- DDDDeeeelllleeeetttteeeeLLLLeeeefffftttt
- Delete the character to the left of the cursor.
-
- RRRReeeettttuuuurrrrnnnn
- Execute the command line, unless the first character of
- the command is a !!!!, in which case the appropriate
- history processing is done. _T_h_i_s _i_s _t_h_e _a_c_t_u_a_l _k_e_y
- _p_r_e_s_s_e_d _a_n_d _c_a_n_n_o_t _b_e _m_o_d_i_f_i_e_d _b_y _t_h_e _i_n_i_t_i_a_l_i_s_a_t_i_o_n
- _f_i_l_e.
-
- IIIInnnniiiittttiiiiaaaalllliiiissssaaaattttiiiioooonnnn FFFFiiiilllleeee
- When the shell is run in interactive mode, the Command Line
- Editing keys and other user configuration parameters are
- read from the initialisation file _s_h._i_n_i. This shell looks
- for this file in the same directory as the sssshhhh executable
- which is running. It does not use the SSSSHHHHEEEELLLLLLLL environment
- variable or search the directories in the PPPPAAAATTTTHHHH environment
- variable. At present, there are two types of entry in this
- file: keyboard configuration; and others. The entry is
- contained in a single line and consists of a keyword (in
- upper or lower case), white space, an equals symbols, white
- space and one or two numeric values (see _s_t_r_t_o_l for valid
- formats where _b_a_s_e parameter is zero), followed by an end of
- line character.
-
- For the keyboard entries, the numeric values give the MSDOS
- Function 8 (Console Input without Echo) return values for
- that entry. Note that extended codes (function keys)
- require two calls to this function. The first call returns
-
-
-
- Page 12 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- zero and the second the extended code. In the configuration
- file, a first numeric value of zero indicates a extended
- code and must be followed by a second value. A non-zero
- first numeric value must not be followed by anything else on
- the line.
-
- Other entries must only have one numeric value. A zero
- value disables the function and a non-zero value enables the
- function. At present, there are two other functions:
-
- BBBBeeeellllllll Enable/disable warning bells
-
- HHHHaaaallllffffHHHHeeeeiiiigggghhhhtttt
- Use full or halfheight block cursor to indicate Insert
- mode
-
- Invalid lines or lines beginning with a #### are ignored.
-
- The following table gives the list of valid keywords and
- their default values:
- _________________________________________________________________________
- Keyword First numeric Second numeric Actual Key
- _________________________________________________________________________
- KEYBOARD ENTRIES
- ScanBackward 0 0x49 PAGE UP
- ScanForeward 0 0x51 PAGE DOWN
- Previous 0 0x48 UP ARROW
- Next 0 0x50 DOWN ARROW
- Left 0 0x4b LEFT ARROW
- Right 0 0x4d RIGHT ARROW
- WordRight 0 0x74 Control RIGHT ARROW
- WordLeft 0 0x73 Control LEFT ARROW
- Start 0 0x47 HOME
- Clear 0 0x76 Control PAGE DOWN
- Flush 0 0x75 Control END
- End 0 0x4f END
- Insert 0 0x52 INSERT
- DeleteRight 0 0x53 DELETE
- DeleteLeft 0x08 BACKSPACE
- Complete 0 0x77 Control HOME
- Directory 0 0x0f Shift TAB
- _________________________________________________________________________
- OTHER FUNCTIONS
- Bell 0
- HalfHeight 0
- _________________________________________________________________________
-
- EEEExxxxeeeeccccuuuuttttiiiioooonnnn
- Each time a command is executed, the above substitutions are
- carried out. If the command name matches one of the _S_p_e_c_i_a_l
- _C_o_m_m_a_n_d_s listed below, it is executed in the shell process.
- If the command name does not match a _S_p_e_c_i_a_l _C_o_m_m_a_n_d, but
- matches the name of a defined function, the function is
- executed in the shell process (note how this differs from
-
- Page 13 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- the execution of shell procedures). The positional
- parameters $$$$1111, $$$$2222, .... are set to the arguments of the
- function. If the command name matches neither a _S_p_e_c_i_a_l
- _C_o_m_m_a_n_d nor the name of a defined function, a new process is
- created and an attempt is made to execute the command via
- _e_x_e_c(2).
-
- The shell parameter PPPPAAAATTTTHHHH defines the search path for the
- directory containing the command. Alternative directory
- names are separated by a semi-colon (;;;;). The default path
- is ;;;;cccc::::////bbbbiiiinnnn;;;;cccc::::////uuuussssrrrr////bbbbiiiinnnn (specifying the current directory,
- cccc::::////bbbbiiiinnnn, and cccc::::////uuuussssrrrr////bbbbiiiinnnn, in that order). Note that the
- current directory is specified by a null path name, which
- can appear immediately after the equal sign or between the
- semi-colon delimiters anywhere else in the path list. If
- the command name contains a //// or starts with xxxx:::: (where x is
- a drive letter) the search path is not used; such commands
- will not be executed by the restricted shell. Otherwise,
- each directory in the path is searched for an executable
- file. Executable files are indicated by a .exe or .com
- extension. This extension is automatically supplied by the
- shell and not have to be entered by the user.
-
- If the file with a .com or .exe extension cannot be found in
- the directory, the file is opened and first 512 characters
- are read. If there are no characters in the block with a
- value in the range 0 to 7, the file is assumed to be a
- script file containing shell commands. Note that the shell
- will check the file and if that file does not exist or is
- not a script, it will try the file with an extension of ....sssshhhh.
- If a ....sssshhhh file is found, that will be processed. A sub-shell
- (given by the environment variable SSSSHHHHEEEELLLLLLLL) is spawned to read
- it.
-
- If the script file starts with the a line of the form #!
- _i_n_t_e_r_p_r_e_t_e_r [_a_r_g_u_m_e_n_t_s], the interpreter is invoked instead
- of the shell to process the script. Optional arguments can
- be supplied in the script file which are passed before the
- name of the script file. Thus, if the file _d_e_m_o contained
- the following string as the first line
-
- #! perl -sP
-
- Entering _d_e_m_o _n_a_m_e would be equivalent to entering the _p_e_r_l
- -_s_P _n_a_m_e at the command prompt. Note that no other
- processing of the first line other that the separation (by
- white space) into arguments is done.
-
- If none of the above conditions for a executable file are
- detected and a file with a .bat extension exists in the
- directory, the command processor given by the CCCCOOOOMMMMSSSSPPPPEEEECCCC
- environment variable is spawned to process the file. This
-
-
-
- Page 14 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- is normally the standard MSDOS _c_o_m_m_a_n_d._c_o_m processor.
-
- A parenthesized command is also executed in a sub-shell.
-
- SSSSppppeeeecccciiiiaaaallll CCCCoooommmmmmmmaaaannnnddddssss
- Input/output redirection is permitted for these commands.
- File descriptor 1 is the default output location.
-
- :::: No effect; the command does nothing. A zero exit code
- is returned.
- _l_e_t_t_e_r::::
- Select the drive specified by _l_e_t_t_e_r.
- .... _f_i_l_e
- Read and execute commands from _f_i_l_e and return. The
- search path specified by PPPPAAAATTTTHHHH is used to find the
- directory containing _f_i_l_e.
- bbbbrrrreeeeaaaakkkk [ _n ]
- Exit from the enclosing ffffoooorrrr or wwwwhhhhiiiilllleeee loop, if any. If
- _n is specified, break _n levels.
- bbbbuuuuiiiillllttttiiiinnnn [ _a_r_g_s ... ]
- Force the selection of the bbbbuuuuiiiillllttttiiiinnnn version of a
- command. The builtin shell command selected by the
- first _a_r_g_s value is executed with the parameters
- defined by the remaining _a_r_g_ss. If no arguments are
- given, a list of all _b_u_i_l_t_i_n commands is printed.
-
- If the first argument is one of the following, the
- processing of the builtin command in the following
- arguments are changed as indicated:
- ----aaaa Set the following builtin commands to use builtin
- version in preference to any function or external
- versions.
- ----dddd Set the following builtin commands to use the
- function or external version in preference to the
- builtin version.
- ----ssss Display the current status of the following
- builtin commands.
- ccccoooonnnnttttiiiinnnnuuuueeee [ _n ]
- Resume the next iteration of the enclosing ffffoooorrrr or wwwwhhhhiiiilllleeee
- loop. If _n is specified, resume at the _n-th enclosing
- loop.
- ccccdddd [ _a_r_g ]
- Change the current directory to _a_r_g. The shell
- parameter HHHHOOOOMMMMEEEE is the default _a_r_g. The shell parameter
- CCCCDDDDPPPPAAAATTTTHHHH defines the search path for the directory
- containing _a_r_g. Alternative directory names are
- separated by a semi-colon (;;;;). The default path is
- <<<<nnnnuuuullllllll>>>> (specifying the current directory). Note that
- the current directory is specified by a null path name,
- which can appear immediately after the equal sign or
- between the semi-colon delimiters anywhere else in the
- path list. If _a_r_g begins with a //// or xxxx:::: (where x is a
-
-
-
- Page 15 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- drive letter), the search path is not used. Otherwise,
- each directory in the path is searched for _a_r_g. The _c_d
- command may not be executed by _r_s_h.
- eeeecccchhhhoooo [ _a_r_g ... ]
- Echo arguments. EEEEcccchhhhoooo writes its arguments separated by
- blanks and terminated by a new-line on the standard
- output. It also understands C-like escape conventions;
- beware of conflicts with the shell's use of \\\\:
- \\\\bbbb backspace
- \\\\cccc print line without new-line
- \\\\ffff form-feed
- \\\\nnnn new-line
- \\\\rrrr carriage return
- \\\\tttt tab
- \\\\vvvv vertical tab
- \\\\\\\\ backslash
- \\\\_n the 8-bit character whose ASCII code is the 1-, 2-
- or 3-digit octal number _n, which must start with a
- zero.
-
- _E_c_h_o is useful for producing diagnostics in command
- files and for sending known data into a pipe.
-
- eeeevvvvaaaallll [ _a_r_g ... ]
- The arguments are read as input to the shell and the
- resulting command(s) executed.
-
- eeeexxxxeeeecccc [ _a_r_g ... ]
- The command specified by the arguments is executed in
- place of this shell without creating a new process.
- Input/output arguments may appear and, if no other
- arguments are given, cause the shell input/output to be
- modified.
-
- eeeexxxxiiiitttt [ _n ]
- Causes a shell to exit with the exit status specified
- by _n. If _n is omitted the exit status is that of the
- last command executed (an end-of-file will also cause
- the shell to exit.)
-
- eeeexxxxppppoooorrrrtttt [ _n_a_m_e ... ]
- The given _n_a_m_es are marked for automatic export to the
- _e_n_v_i_r_o_n_m_e_n_t of subsequently-executed commands. If no
- arguments are given, a list of all names that are
- exported in this shell is printed. Function names may
- _n_o_t be exported.
-
- ggggeeeettttoooopppptttt _o_p_t_s_t_r_i_n_g _n_a_m_e [ _a_r_g_s ... ]
- Parse command options and write them to standard
- output. GGGGeeeettttoooopppptttt is used to break up options in command
- lines for easy parsing by shell procedures and to check
- for legal options. _O_p_t_s_t_r_i_n_g is a string of recognized
-
-
-
- Page 16 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- option letters (see _g_e_t_o_p_t(3C)); if a letter is
- followed by a colon, the option is expected to have an
- argument which may or may not be separated from it by
- white space. The special option -------- is used to delimit
- the end of the options. If it is used explicitly,
- ggggeeeettttoooopppptttt will recognize it; otherwise, ggggeeeettttoooopppptttt will
- generate it; in either case, ggggeeeettttoooopppptttt will place it at
- the end of the options. Each option is preceded by a ----
- and is in its own positional parameter; each option
- argument is also parsed into its own positional
- parameter.
-
- The following code fragment shows how one might process
- the arguments for a command that can take the options aaaa
- or bbbb, as well as the option oooo, which requires an
- argument:
-
- set -- `getopt abo: $*`
- if [ $? != 0 ]
- then
- echo $USAGE
- exit 2
- fi
- for i in $*
- do
- case $i in
- -a | -b) FLAG=$i; shift;;
- -o) OARG=$2; shift 2;;
- --) shift; break;;
- esac
- done
-
- This code will accept any of the following as
- equivalent:
-
- cmd -aoarg file file
- cmd -a -o arg file file
- cmd -oarg -a file file
- cmd -a -oarg -- file file
-
- hhhhiiiissssttttoooorrrryyyy [ ----ddddeeeeiiii ]
- The hhhhiiiissssttttoooorrrryyyy command, with no arguments, will print all
- the commands that are currently saved in the shell's
- history buffers. As new commands are executed, and
- space in the buffers runs out, old commands will be
- deleted. The hhhhiiiissssttttoooorrrryyyy commands prints out the stored
- commands with sequence numbers. Negative numbered
- commands, through command number zero, are commands
- that were retrieved from the saved history file.
- Commands starting at one were entered during the
- current login session. If a saved command contains
- embedded newlines, these will be printed out as the
-
-
-
- Page 17 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- sequence \\\\nnnn, so that individual command stay on one
- line.
-
- The arguments changes the way the shell processes
- history information as follows:
-
- ----dddd Disable the saving of commands in the history
- file.
-
- ----eeee Enable the saving of commands in the history file.
-
- ----iiii Initialise the history file.
-
- mmmmssssddddoooossss [ _n_a_m_e ... ]
- The given _n_a_m_es are marked _m_s_d_o_s format and if the ----mmmm
- flag is set, the values of the these _n_a_m_es are exported
- to child processes with any slashes in the value
- replaced by backslashes. If no arguments are given, a
- list of all _m_s_d_o_s names is printed.
-
- ppppwwwwdddd Print the current working directory.
-
- rrrreeeeaaaadddd [ _n_a_m_e ... ]
- One line is read from the standard input and the first
- word is assigned to the first _n_a_m_e, the second word to
- the second _n_a_m_e, etc., with leftover words assigned to
- the last _n_a_m_e. The return code is 0 unless an end-of-
- file is encountered.
-
- rrrreeeeaaaaddddoooonnnnllllyyyy [ _n_a_m_e ... ]
- The given _n_a_m_es are marked _r_e_a_d_o_n_l_y and the values of
- the these _n_a_m_es may not be changed by subsequent
- assignment. If no arguments are given, a list of all
- _r_e_a_d_o_n_l_y names is printed.
-
- rrrreeeettttuuuurrrrnnnn [ _n ]
- Causes a function to exit with the return value
- specified by _n. If _n is omitted, the return status is
- that of the last command executed.
-
- sssseeeetttt [ --------aaaaeeeeffffkkkkmmmmnnnnttttuuuuvvvvxxxx [ _a_r_g ... ] ]
-
- ----aaaa Mark variables which are modified or created for
- export.
-
- ----eeee Exit immediately if a command exits with a non-
- zero exit status.
-
- ----ffff Disable file name generation
-
- ----kkkk All keyword arguments are placed in the
- environment for a command, not just those that
-
-
-
- Page 18 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- precede the command name.
-
- ----mmmm For those variables marked as mmmmssssddddoooossss variables, the
- values are exported to child processes with the
- slashes replaced by backslashes. Most MSDOS
- utilities do not care if a file name contains a
- slash or backslash as a directory separator.
- However, some like the _l_i_n_k_e_r require backslashes
- in the value of the LLLLIIIIBBBB variable.
-
- ----nnnn Read commands but do not execute them.
-
- ----tttt Exit after reading and executing one command.
-
- ----uuuu Treat unset variables as an error when
- substituting.
-
- ----vvvv Print shell input lines as they are read.
-
- ----xxxx Print commands and their arguments as they are
- executed.
-
- -------- Do not change any of the flags; useful in setting
- $$$$1111 to ----.
-
- Using ++++ rather than ---- causes these flags to be turned
- off. These flags can also be used upon invocation of
- the shell. The current set of flags may be found in
- $$$$----. The remaining arguments are positional parameters
- and are assigned, in order, to $$$$1111, $$$$2222, .... If no
- arguments are given the values of all names are
- printed.
-
- sssshhhhiiiifffftttt [ _n ]
- The positional parameters from $$$$nnnn++++1111 ... are renamed $$$$1111
- .... If _n is not given, it is assumed to be 1.
-
- sssswwwwaaaapppp [ _o_p_t_i_o_n_s ]
- This command defines how the shell will handle
- swapping. The options are
-
- ooooffffffff Disable swapping. The shell remains in memory
- whilst the child is running and reduces the
- available memory by about 200K (depending on the
- size of the environment and history).
-
- oooonnnn Enable all devices. The shell will swap out to
- either expanded or extended memory or to disk,
- execute the command and then swap back in.
- Whilest swapped, the shell reduces the available
- memory by about 3K.
-
-
-
-
- Page 19 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- eeeexxxxppppaaaannnndddd
- Enable swapping to Expanded Memory. The EMS
- driver must exist on your system for this to work.
-
- eeeexxxxtttteeeennnntttt [ _s_t_a_r_t _a_d_d_r_e_s_s ]
- Enable swapping to Extended Memory. If you have
- an XMS driver on your system, the shell will use
- the XMS driver. Otherwise, the BIOS Interrupt 15
- interface is used. The optional start address
- defines the based address in the Extended Memory
- at which point the shell writes its swap area when
- the BIOS interface is used. The default location
- is _0_x_1_0_0_0_0_0.
-
- ddddiiiisssskkkk Enable swapping to disk. The shell creates a
- temporary file and saves itself in it. On
- completion, the file is deleted. This is the
- slowest method of swapping.
-
- With no options, the current swapping options are
- displayed.
-
- tttteeeesssstttt _e_x_p_r or [[[[ _e_x_p_r ]]]]
- Evaluate conditional expressions. TTTTeeeesssstttt evaluates the
- expression _e_x_p_r and, if its value is true, returns a
- zero (true) exit status; otherwise, a non-zero (false)
- exit status is returned; tttteeeesssstttt also returns a non-zero
- exit status if there are no arguments. The following
- primitives are used to construct eeeexxxxpppprrrr:
-
- ----rrrr _f_i_l_e true if _f_i_l_e exists and is readable.
-
- ----wwww _f_i_l_e true if _f_i_l_e exists and is writable.
-
- ----xxxx _f_i_l_e true if _f_i_l_e exists and is executable.
-
- ----ffff _f_i_l_e true if _f_i_l_e exists and is a regular file.
-
- ----dddd _f_i_l_e true if _f_i_l_e exists and is a directory.
-
- ----cccc _f_i_l_e true if _f_i_l_e exists and is a character
- special file.
-
- ----bbbb _f_i_l_e true if _f_i_l_e exists and is a block special
- file.
-
- ----ssss _f_i_l_e true if _f_i_l_e exists and has a size greater
- than zero.
-
- ----tttt [ _f_i_l_d_e_s ]
- true if the open file whose file descriptor
- number is _f_i_l_d_e_s (1 by default) is
-
-
-
- Page 20 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- associated with a terminal device.
-
- ----zzzz _s_1 true if the length of the string _s_1 is
- zero.
-
- ----nnnn _s_1 true if the length of the string _s_1 is
- non-zero.
-
- _s_1 ==== _s_2 true if strings _s_1 and _s_2 are identical.
-
- _s_1 !!!!==== _s_2 true if strings _s_1 and _s_2 are _n_o_t
- identical.
-
- _s_1 true if _s_1 is _n_o_t the null string.
-
- _n_1 ----eeeeqqqq _n_2 true if the integers _n_1 and _n_2 are
- algebraically equal. Any of the
- comparisons ----nnnneeee, ----ggggtttt, ----ggggeeee, ----lllltttt, and ----lllleeee may
- be used in place of RRRR----eeeeqqqq.
-
- These primaries may be combined with the following
- operators:
-
- !!!! unary negation operator.
-
- ----aaaa binary _a_n_d operator.
-
- ----oooo binary _o_r operator (----aaaa has higher
- precedence than ----oooo).
-
- (((( expr )))) parentheses for grouping.
-
- Notice that all the operators and flags are separate
- arguments to tttteeeesssstttt. Notice also that parentheses are
- meaningful to the shell and, therefore, must be
- escaped.
-
- ttttrrrraaaapppp [ _a_r_g ] [ _n ] ...
- The command _a_r_g is to be read and executed when the
- shell receives signal(s) _n. (Note that _a_r_g is scanned
- once when the trap is set and once when the trap is
- taken.) Trap commands are executed in order of signal
- number. Any attempt to set a trap on a signal that was
- ignored on entry to the current shell is ineffective.
- An attempt to trap on signal 11 (memory fault) produces
- an error. If _a_r_g is absent all trap(s) _n are reset to
- their original values. If _a_r_g is the null string this
- signal is ignored by the shell and by the commands it
- invokes. If _n is 0 the command _a_r_g is executed on exit
- from the shell. The ttttrrrraaaapppp command with no arguments
- prints a list of commands associated with each signal
- number.
-
-
-
- Page 21 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- ttttyyyyppppeeee [ _n_a_m_e ... ]
- For each _n_a_m_e, indicate how it would be interpreted if
- used as a command name.
-
- uuuummmmaaaasssskkkk [ _n_n_n ]
- The user file-creation mask is set to _n_n_n (see
- _u_m_a_s_k(2)). If _n_n_n is omitted, the current value of the
- mask is printed.
-
- uuuunnnnsssseeeetttt [ _n_a_m_e ... ]
- For each _n_a_m_e, remove the corresponding variable or
- function. The variables PPPPAAAATTTTHHHH, PPPPSSSS1111, PPPPSSSS2222, and IIIIFFFFSSSS cannot
- be unset.
-
- vvvveeeerrrr Display the current version of the shell.
-
- IIIInnnnvvvvooooccccaaaattttiiiioooonnnn
- If the shell is invoked through _e_x_e_c(2) and the first
- character of argument zero is ---- or the ----0000(zero) switch is in
- the invokation line, commands are initially read from
- ////eeeettttcccc////pppprrrrooooffffiiiilllleeee....sssshhhh and from $$$$HHHHOOOOMMMMEEEE////pppprrrrooooffffiiiilllleeee....sssshhhh, if such files
- exist. Thereafter, commands are read as described below,
- which is also the case when the shell is invoked as ////bbbbiiiinnnn////sssshhhh.
- The flags below are interpreted by the shell on invocation
- only; Note that unless the ----cccc or ----ssss flag is specified, the
- first argument is assumed to be the name of a file
- containing commands, and the remaining arguments are passed
- as positional parameters to that command file:
-
- ----cccc string If the ----cccc flag is present commands are read from
- _s_t_r_i_n_g.
- ----ssss If the ----ssss flag is present or if no arguments
- remain commands are read from the standard input.
- Any remaining arguments specify the positional
- parameters. Shell output (except for _S_p_e_c_i_a_l
- _C_o_m_m_a_n_d_s) is written to file descriptor 2.
- ----iiii If the ----iiii flag is present or if the shell input
- and output are attached to a terminal, this shell
- is _i_n_t_e_r_a_c_t_i_v_e. In this case, the TERMINATE
- signal is ignored and the INTERRUPT signal is
- caught and ignored. In all cases, the QUIT signal
- is ignored by the shell.
- ----rrrr If the ----rrrr flag is present, the shell is a
- restricted shell.
- ----0000(zero) If the ----0000(zero) flag is present, this has the same
- effect as starting the shell with the first
- character of argument zero as a ---- (see above).
-
- The remaining flags and arguments are described under the
- sssseeeetttt command above.
-
- RRRRsssshhhh OOOOnnnnllllyyyy
-
-
-
- PPPPaaaaggggeeee 22222222 ((((pppprrrriiiinnnntttteeeedddd 11111111////6666////99990000))))
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- _R_s_h is used to set up login names and execution environments
- whose capabilities are more controlled than those of the
- standard shell. The actions of _r_s_h are identical to those
- of _s_h, except that the following are disallowed:
- changing directory (see _c_d(1)),
- setting the value of $$$$PPPPAAAATTTTHHHH
- specifying path or command names containing ////,
- redirecting output (>>>> and >>>>>>>>).
-
- The restrictions above are enforced after pppprrrrooooffffiiiilllleeee....sssshhhh is
- interpreted.
-
- When a command to be executed is found to be a shell
- procedure, _r_s_h invokes _s_h to execute it. Thus, it is
- possible to provide to the end-user shell procedures that
- have access to the full power of the standard shell, while
- imposing a limited menu of commands; this scheme assumes
- that the end-user does not have write and execute
- permissions in the same directory.
-
- The net effect of these rules is that the writer of the
- pppprrrrooooffffiiiilllleeee....sssshhhh has complete control over user actions, by
- performing guaranteed setup actions and leaving the user in
- an appropriate directory (probably _n_o_t the login directory).
-
- The system administrator often sets up a directory of
- commands (i.e., ////uuuussssrrrr////rrrrbbbbiiiinnnn) that can be safely invoked by
- _r_s_h. Some systems also provide a restricted editor _r_e_d.
-
- EEEEXXXXIIIITTTT SSSSTTTTAAAATTTTUUUUSSSS
- Errors detected by the shell, such as syntax errors, cause
- the shell to return a non-zero exit status. If the shell is
- being used non-interactively execution of the shell file is
- abandoned. Otherwise, the shell returns the exit status of
- the last command executed (see also the eeeexxxxiiiitttt command above).
-
- FFFFIIIILLLLEEEESSSS
- /etc/profile.sh
- $HOME/profile.sh
- $TMP/sh*
- ??/sh.ini
-
- CCCCRRRRIIIITTTTIIIICCCCAAAALLLL EEEERRRRRRRROOOORRRRSSSS
- The Shell provide a Critical Error Handler (Interrupt 24)
- similar to the standard MSDOS handler. In addition to the
- standard message, the handler also displays the Extended
- Error Code information in hexadecimal.
-
- LLLLIIIIMMMMIIIIIIIITTTTAAAATTTTIIIIOOOONNNNSSSS
- Any TSR (Terminate Stay Resident) programs must be loaded
- before loading _S_h as the shell will overwrite the TSR when
- it reloads itself after swapping out.
-
-
-
- Page 23 (printed 11/6/90)
-
-
-
-
-
-
- SSSSHHHH((((1111LLLL)))) MMMMSSSS----DDDDOOOOSSSS VVVVeeeerrrrssssiiiioooonnnn 1111....6666 ((((DDDDaaaattttaaaa LLLLooooggggiiiicccc LLLLiiiimmmmiiiitttteeeedddd)))) SSSSHHHH((((1111LLLL))))
-
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- cd(1), env(1), test(1), umask(1).
- dup(2), exec(2), pipe(2), signal(2), umask(2), wait(2),
- strtol(3), profile(4), environ(5) in the _U_N_I_X _S_y_s_t_e_m
- _P_r_o_g_r_a_m_m_e_r _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 24 (printed 11/6/90)
-
-
-
-