19ddb49cbSWarner Losh.\"- 24b88c807SRodney W. Grimes.\" Copyright (c) 1991, 1993 34b88c807SRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 44b88c807SRodney W. Grimes.\" 54b88c807SRodney W. Grimes.\" This code is derived from software contributed to Berkeley by 64b88c807SRodney W. Grimes.\" Kenneth Almquist. 74b88c807SRodney W. Grimes.\" 84b88c807SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 94b88c807SRodney W. Grimes.\" modification, are permitted provided that the following conditions 104b88c807SRodney W. Grimes.\" are met: 114b88c807SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 124b88c807SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 134b88c807SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 144b88c807SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 154b88c807SRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 164b88c807SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 174b88c807SRodney W. Grimes.\" may be used to endorse or promote products derived from this software 184b88c807SRodney W. Grimes.\" without specific prior written permission. 194b88c807SRodney W. Grimes.\" 204b88c807SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 214b88c807SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 224b88c807SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 234b88c807SRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 244b88c807SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 254b88c807SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 264b88c807SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 274b88c807SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 284b88c807SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 294b88c807SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 304b88c807SRodney W. Grimes.\" SUCH DAMAGE. 314b88c807SRodney W. Grimes.\" 32ab72124fSSteve Price.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 332a456239SPeter Wemm.\" $FreeBSD$ 344b88c807SRodney W. Grimes.\" 35128dc4a2STim J. Robbins.Dd July 3, 2004 36ab72124fSSteve Price.Dt SH 1 37caa2db3bSRuslan Ermilov.Os 38ab72124fSSteve Price.Sh NAME 39ab72124fSSteve Price.Nm sh 40ab72124fSSteve Price.Nd command interpreter (shell) 41ab72124fSSteve Price.Sh SYNOPSIS 42ab72124fSSteve Price.Nm 437e1975c2STim J. Robbins.Op Fl /+abCEefIimnPpsTuVvx 44ab72124fSSteve Price.Op Fl /+o Ar longname 45c7a197e1SWolfram Schneider.Op Fl c Ar string 4681e9cda2SRuslan Ermilov.Op Ar arg ... 47ab72124fSSteve Price.Sh DESCRIPTION 48e918fc8fSSheldon HearnThe 49e918fc8fSSheldon Hearn.Nm 50e918fc8fSSheldon Hearnutility is the standard command interpreter for the system. 51ab72124fSSteve PriceThe current version of 52ab72124fSSteve Price.Nm 53ab72124fSSteve Priceis in the process of being changed to 54ab72124fSSteve Priceconform with the 55ab72124fSSteve Price.St -p1003.2 56eccea571SRuslan Ermilovspecification for the shell. 57eccea571SRuslan ErmilovThis version has many features which make 58ab72124fSSteve Priceit appear 594b88c807SRodney W. Grimessimilar in some respects to the Korn shell, but it is not a Korn 60fbc8f8a2SJens Schweikhardtshell clone like pdksh. 6149e11e3aSSheldon HearnOnly features 624b88c807SRodney W. Grimesdesignated by POSIX, plus a few Berkeley extensions, are being 63ab72124fSSteve Priceincorporated into this shell. 6449e11e3aSSheldon HearnThis man page is not intended to be a tutorial nor a complete 654b88c807SRodney W. Grimesspecification of the shell. 66ab72124fSSteve Price.Ss Overview 674b88c807SRodney W. GrimesThe shell is a command that reads lines from 684b88c807SRodney W. Grimeseither a file or the terminal, interprets them, and 69e6d3cf26SSheldon Hearngenerally executes other commands. 7049e11e3aSSheldon HearnIt is the program that is started when a user logs into the system, 7149e11e3aSSheldon Hearnalthough a user can select a different shell with the 72c644db6aSSheldon Hearn.Xr chsh 1 7349e11e3aSSheldon Hearncommand. 744b88c807SRodney W. GrimesThe shell 754b88c807SRodney W. Grimesimplements a language that has flow control constructs, 764b88c807SRodney W. Grimesa macro facility that provides a variety of features in 778eed22b1SJens Schweikhardtaddition to data storage, along with built-in history and line 78eccea571SRuslan Ermilovediting capabilities. 79eccea571SRuslan ErmilovIt incorporates many features to 804b88c807SRodney W. Grimesaid interactive use and has the advantage that the interpretative 814b88c807SRodney W. Grimeslanguage is common to both interactive and non-interactive 82eccea571SRuslan Ermilovuse (shell scripts). 83eccea571SRuslan ErmilovThat is, commands can be typed directly 8449e11e3aSSheldon Hearnto the running shell or can be put into a file, 8549e11e3aSSheldon Hearnwhich can be executed directly by the shell. 86ab72124fSSteve Price.Ss Invocation 8749e11e3aSSheldon Hearn.\" 8849e11e3aSSheldon Hearn.\" XXX This next sentence is incredibly confusing. 8949e11e3aSSheldon Hearn.\" 9049e11e3aSSheldon HearnIf no arguments are present and if the standard input of the shell 9149e11e3aSSheldon Hearnis connected to a terminal 9249e11e3aSSheldon Hearn(or if the 9349e11e3aSSheldon Hearn.Fl i 9449e11e3aSSheldon Hearnoption is set), 95eccea571SRuslan Ermilovthe shell is considered an interactive shell. 96eccea571SRuslan ErmilovAn interactive shell 974b88c807SRodney W. Grimesgenerally prompts before each command and handles programming 984b88c807SRodney W. Grimesand command errors differently (as described below). 994b88c807SRodney W. GrimesWhen first starting, the shell inspects argument 0, and 10049e11e3aSSheldon Hearnif it begins with a dash 101a762afe5SGiorgos Keramidas.Pq Ql - , 10249e11e3aSSheldon Hearnthe shell is also considered a login shell. 10349e11e3aSSheldon HearnThis is normally done automatically by the system 104eccea571SRuslan Ermilovwhen the user first logs in. 105eccea571SRuslan ErmilovA login shell first reads commands 106ab72124fSSteve Pricefrom the files 107ab72124fSSteve Price.Pa /etc/profile 10849e11e3aSSheldon Hearnand then 109ab72124fSSteve Price.Pa .profile 110eccea571SRuslan Ermilovif they exist. 111eccea571SRuslan ErmilovIf the environment variable 112ab72124fSSteve Price.Ev ENV 113ab72124fSSteve Priceis set on entry to a shell, or is set in the 114ab72124fSSteve Price.Pa .profile 11549e11e3aSSheldon Hearnof a login shell, the shell then reads commands from the file named in 116ab72124fSSteve Price.Ev ENV . 117ab72124fSSteve PriceTherefore, a user should place commands that are to be executed only 118ab72124fSSteve Priceat login time in the 119ab72124fSSteve Price.Pa .profile 120ab72124fSSteve Pricefile, and commands that are executed for every shell inside the 121ab72124fSSteve Price.Ev ENV 122e6d3cf26SSheldon Hearnfile. 12349e11e3aSSheldon HearnThe user can set the 124ab72124fSSteve Price.Ev ENV 12549e11e3aSSheldon Hearnvariable to some file by placing the following line in the file 126ab72124fSSteve Price.Pa .profile 12749e11e3aSSheldon Hearnin the home directory, 128ab72124fSSteve Pricesubstituting for 129ab72124fSSteve Price.Pa .shinit 13049e11e3aSSheldon Hearnthe filename desired: 13149e11e3aSSheldon Hearn.Pp 13249e11e3aSSheldon Hearn.Dl ENV=$HOME/.shinit; export ENV 13349e11e3aSSheldon Hearn.Pp 13449e11e3aSSheldon HearnThe first non-option argument specified on the command line 13549e11e3aSSheldon Hearnwill be treated as the 1364b88c807SRodney W. Grimesname of a file from which to read commands (a shell script), and 1374b88c807SRodney W. Grimesthe remaining arguments are set as the positional parameters 138eccea571SRuslan Ermilovof the shell ($1, $2, etc). 139eccea571SRuslan ErmilovOtherwise, the shell reads commands 1404b88c807SRodney W. Grimesfrom its standard input. 141ea76be72SSteve Price.Pp 142ea76be72SSteve PriceUnlike older versions of 143ea76be72SSteve Price.Nm 144ea76be72SSteve Pricethe 145ea76be72SSteve Price.Ev ENV 146eccea571SRuslan Ermilovscript is only sourced on invocation of interactive shells. 147eccea571SRuslan ErmilovThis 148ea76be72SSteve Pricecloses a well-known, and sometimes easily exploitable security 149ea76be72SSteve Pricehole related to poorly thought out 150ea76be72SSteve Price.Ev ENV 151ea76be72SSteve Pricescripts. 152ab72124fSSteve Price.Ss Argument List Processing 153ab72124fSSteve PriceAll of the single letter options to 154ab72124fSSteve Price.Nm 15549e11e3aSSheldon Hearnhave a corresponding long name, 15649e11e3aSSheldon Hearnwith the exception of 15749e11e3aSSheldon Hearn.Fl c 15849e11e3aSSheldon Hearnand 15949e11e3aSSheldon Hearn.Fl /+o . 16049e11e3aSSheldon HearnThese long names are provided next to the single letter options 16149e11e3aSSheldon Hearnin the descriptions below. 16249e11e3aSSheldon HearnThe long name for an option may be specified as an argument to the 16349e11e3aSSheldon Hearn.Fl /+o 16449e11e3aSSheldon Hearnoption of 165facc6767SRuslan Ermilov.Nm . 16649e11e3aSSheldon HearnOnce the shell is running, 16749e11e3aSSheldon Hearnthe long name for an option may be specified as an argument to the 16849e11e3aSSheldon Hearn.Fl /+o 16949e11e3aSSheldon Hearnoption of the 170c644db6aSSheldon Hearn.Ic set 1718eed22b1SJens Schweikhardtbuilt-in command 17249e11e3aSSheldon Hearn(described later in the section called 1738eed22b1SJens Schweikhardt.Sx Built-in Commands ) . 17449e11e3aSSheldon HearnIntroducing an option with a dash 175a762afe5SGiorgos Keramidas.Pq Ql - 17649e11e3aSSheldon Hearnenables the option, 17749e11e3aSSheldon Hearnwhile using a plus 178a762afe5SGiorgos Keramidas.Pq Ql + 17949e11e3aSSheldon Hearndisables the option. 18049e11e3aSSheldon HearnA 18149e11e3aSSheldon Hearn.Dq Li -- 182fab26805SJoseph Koshyor plain 183a762afe5SGiorgos Keramidas.Dq Ql - 184fab26805SJoseph Koshywill stop option processing and will force the remaining 185fab26805SJoseph Koshywords on the command line to be treated as arguments. 18649e11e3aSSheldon HearnThe 18749e11e3aSSheldon Hearn.Fl /+o 18849e11e3aSSheldon Hearnand 18949e11e3aSSheldon Hearn.Fl c 19049e11e3aSSheldon Hearnoptions do not have long names. 19149e11e3aSSheldon HearnThey take arguments and are described after the single letter options. 19281e9cda2SRuslan Ermilov.Bl -tag -width indent 193ab72124fSSteve Price.It Fl a Li allexport 19449e11e3aSSheldon HearnFlag variables for export when assignments are made to them. 195ab72124fSSteve Price.It Fl b Li notify 196ab72124fSSteve PriceEnable asynchronous notification of background job 197ab72124fSSteve Pricecompletion. 198c4d9468eSRuslan Ermilov(UNIMPLEMENTED) 199ab72124fSSteve Price.It Fl C Li noclobber 200c644db6aSSheldon HearnDo not overwrite existing files with 20149e11e3aSSheldon Hearn.Dq Li > . 202ab72124fSSteve Price.It Fl E Li emacs 2038eed22b1SJens SchweikhardtEnable the built-in 204ab72124fSSteve Price.Xr emacs 1 20549e11e3aSSheldon Hearncommand line editor (disables the 206ab72124fSSteve Price.Fl V 20749e11e3aSSheldon Hearnoption if it has been set). 208ab72124fSSteve Price.It Fl e Li errexit 20949e11e3aSSheldon HearnExit immediately if any untested command fails in non-interactive mode. 2104b88c807SRodney W. GrimesThe exit status of a command is considered to be 2114b88c807SRodney W. Grimesexplicitly tested if the command is used to control 2124b88c807SRodney W. Grimesan if, elif, while, or until; or if the command is the left 213ab72124fSSteve Pricehand operand of an 21449e11e3aSSheldon Hearn.Dq Li && 215ab72124fSSteve Priceor 21649e11e3aSSheldon Hearn.Dq Li || 217ab72124fSSteve Priceoperator. 218ab72124fSSteve Price.It Fl f Li noglob 2194b88c807SRodney W. GrimesDisable pathname expansion. 220ab72124fSSteve Price.It Fl I Li ignoreeof 22149e11e3aSSheldon HearnIgnore 22249e11e3aSSheldon Hearn.Dv EOF Ns ' Ns s 22349e11e3aSSheldon Hearnfrom input when in interactive mode. 224ab72124fSSteve Price.It Fl i Li interactive 225ab72124fSSteve PriceForce the shell to behave interactively. 226ab72124fSSteve Price.It Fl m Li monitor 227ab72124fSSteve PriceTurn on job control (set automatically when interactive). 228ab72124fSSteve Price.It Fl n Li noexec 2294b88c807SRodney W. GrimesIf not interactive, read commands but do not 230eccea571SRuslan Ermilovexecute them. 231eccea571SRuslan ErmilovThis is useful for checking the 2324b88c807SRodney W. Grimessyntax of shell scripts. 2337e1975c2STim J. Robbins.It Fl P Li physical 2347e1975c2STim J. RobbinsChange the default for the 2357e1975c2STim J. Robbins.Ic cd 2367e1975c2STim J. Robbinsand 2377e1975c2STim J. Robbins.Ic pwd 2387e1975c2STim J. Robbinscommands from 2397e1975c2STim J. Robbins.Fl L 2407e1975c2STim J. Robbins(logical directory layout) 2417e1975c2STim J. Robbinsto 2427e1975c2STim J. Robbins.Fl P 2437e1975c2STim J. Robbins(physical directory layout). 244ab72124fSSteve Price.It Fl p Li privileged 245eccea571SRuslan ErmilovTurn on privileged mode. 246eccea571SRuslan ErmilovThis mode is enabled on startup 247621a31c6SSteve Priceif either the effective user or group id is not equal to the 248eccea571SRuslan Ermilovreal user or group id. 249eccea571SRuslan ErmilovTurning this mode off sets the 250621a31c6SSteve Priceeffective user and group ids to the real user and group ids. 25149e11e3aSSheldon HearnWhen this mode is enabled for interactive shells, the file 252ab72124fSSteve Price.Pa /etc/suid_profile 25349e11e3aSSheldon Hearnis sourced instead of 25449e11e3aSSheldon Hearn.Pa ~/.profile 255ab72124fSSteve Priceafter 256ab72124fSSteve Price.Pa /etc/profile 25749e11e3aSSheldon Hearnis sourced, and the contents of the 258ab72124fSSteve Price.Ev ENV 25949e11e3aSSheldon Hearnvariable are ignored. 260ab72124fSSteve Price.It Fl s Li stdin 2614b88c807SRodney W. GrimesRead commands from standard input (set automatically 262eccea571SRuslan Ermilovif no file arguments are present). 263eccea571SRuslan ErmilovThis option has 2644b88c807SRodney W. Grimesno effect when set after the shell has already started 265eccea571SRuslan Ermilovrunning (i.e., when set with the 266c644db6aSSheldon Hearn.Ic set 2676b15476eSSheldon Hearncommand). 268304199ceSTom Rhodes.It Fl T Li trapsasync 269e6d3cf26SSheldon HearnWhen waiting for a child, execute traps immediately. 270e6d3cf26SSheldon HearnIf this option is not set, 271e6d3cf26SSheldon Hearntraps are executed after the child exits, 272e6d3cf26SSheldon Hearnas specified in 273af5eb6fcSMaxim Konovalov.St -p1003.2 . 2746b15476eSSheldon HearnThis nonstandard option is useful for putting guarding shells around 275eccea571SRuslan Ermilovchildren that block signals. 276eccea571SRuslan ErmilovThe surrounding shell may kill the child 2776b15476eSSheldon Hearnor it may just return control to the tty and leave the child alone, 2786b15476eSSheldon Hearnlike this: 279c1c72a3cSMartin Cracauer.Bd -literal -offset indent 280c1c72a3cSMartin Cracauersh -T -c "trap 'exit 1' 2 ; some-blocking-program" 281c1c72a3cSMartin Cracauer.Ed 282c1c72a3cSMartin Cracauer.Pp 283ab72124fSSteve Price.It Fl u Li nounset 284ab72124fSSteve PriceWrite a message to standard error when attempting 285ab72124fSSteve Priceto expand a variable that is not set, and if the 286ab72124fSSteve Priceshell is not interactive, exit immediately. 287ab72124fSSteve Price.It Fl V Li vi 2888eed22b1SJens SchweikhardtEnable the built-in 289ab72124fSSteve Price.Xr vi 1 290ab72124fSSteve Pricecommand line editor (disables 291ab72124fSSteve Price.Fl E 292ab72124fSSteve Priceif it has been set). 293ab72124fSSteve Price.It Fl v Li verbose 294ab72124fSSteve PriceThe shell writes its input to standard error 295eccea571SRuslan Ermilovas it is read. 296eccea571SRuslan ErmilovUseful for debugging. 297ab72124fSSteve Price.It Fl x Li xtrace 29849e11e3aSSheldon HearnWrite each command 29949e11e3aSSheldon Hearn(preceded by 3006fa13ec0SRuslan Ermilov.Dq Li "+ " ) 30149e11e3aSSheldon Hearnto standard error before it is executed. 30249e11e3aSSheldon HearnUseful for debugging. 30349e11e3aSSheldon Hearn.El 30449e11e3aSSheldon Hearn.Pp 30549e11e3aSSheldon HearnThe 30649e11e3aSSheldon Hearn.Fl c 30749e11e3aSSheldon Hearnoption may be used to pass its string argument to the shell 30849e11e3aSSheldon Hearnto be interpreted as input. 309c7a197e1SWolfram SchneiderKeep in mind that this option only accepts a single string as its 310c7a197e1SWolfram Schneiderargument, hence multi-word strings must be quoted. 31149e11e3aSSheldon Hearn.Pp 31249e11e3aSSheldon HearnThe 31349e11e3aSSheldon Hearn.Fl /+o 31449e11e3aSSheldon Hearnoption takes as its only argument the long name of an option 31549e11e3aSSheldon Hearnto be enabled or disabled. 31649e11e3aSSheldon HearnFor example, the following two invocations of 31749e11e3aSSheldon Hearn.Nm 3188eed22b1SJens Schweikhardtboth enable the built-in 31949e11e3aSSheldon Hearn.Xr emacs 1 32049e11e3aSSheldon Hearncommand line editor: 32149e11e3aSSheldon Hearn.Bd -literal -offset indent 32249e11e3aSSheldon Hearnset -E 32349e11e3aSSheldon Hearnset -o emacs 32449e11e3aSSheldon Hearn.Ed 325d513af6aSTim J. Robbins.Pp 326d513af6aSTim J. RobbinsIf used without an argument, the 327d513af6aSTim J. Robbins.Fl o 328d513af6aSTim J. Robbinsoption displays the current option settings in a human-readable format. 329d513af6aSTim J. RobbinsIf 330d513af6aSTim J. Robbins.Cm +o 331d513af6aSTim J. Robbinsis used without an argument, the current option settings are output 332d513af6aSTim J. Robbinsin a format suitable for re-input into the shell. 333ab72124fSSteve Price.Ss Lexical Structure 3344b88c807SRodney W. GrimesThe shell reads input in terms of lines from a file and breaks 3354b88c807SRodney W. Grimesit up into words at whitespace (blanks and tabs), and at 3364b88c807SRodney W. Grimescertain sequences of 3376b15476eSSheldon Hearncharacters called 3386b15476eSSheldon Hearn.Dq operators , 3396b15476eSSheldon Hearnwhich are special to the shell. 3404b88c807SRodney W. GrimesThere are two types of operators: control operators and 3414b88c807SRodney W. Grimesredirection operators (their meaning is discussed later). 342ab72124fSSteve PriceThe following is a list of valid operators: 34381e9cda2SRuslan Ermilov.Bl -tag -width indent 34449e11e3aSSheldon Hearn.It Control operators: 34549e11e3aSSheldon Hearn.Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact 34681e9cda2SRuslan Ermilov.It Li & Ta Li && Ta Li ( Ta Li ) Ta Li \en 34781e9cda2SRuslan Ermilov.It Li ;; Ta Li ; Ta Li | Ta Li || 34849e11e3aSSheldon Hearn.El 34949e11e3aSSheldon Hearn.It Redirection operators: 3504682f420SBrian Somers.Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact 35181e9cda2SRuslan Ermilov.It Li < Ta Li > Ta Li << Ta Li >> Ta Li <> 35281e9cda2SRuslan Ermilov.It Li <& Ta Li >& Ta Li <<- Ta Li >| 35349e11e3aSSheldon Hearn.El 354ab72124fSSteve Price.El 355ab72124fSSteve Price.Ss Quoting 3564b88c807SRodney W. GrimesQuoting is used to remove the special meaning of certain characters 3574b88c807SRodney W. Grimesor words to the shell, such as operators, whitespace, or 358eccea571SRuslan Ermilovkeywords. 359eccea571SRuslan ErmilovThere are three types of quoting: matched single quotes, 3604b88c807SRodney W. Grimesmatched double quotes, and backslash. 36181e9cda2SRuslan Ermilov.Bl -tag -width indent 362ab72124fSSteve Price.It Single Quotes 3634b88c807SRodney W. GrimesEnclosing characters in single quotes preserves the literal 364ab0a2172SSteve Pricemeaning of all the characters (except single quotes, making 365ab0a2172SSteve Priceit impossible to put single-quotes in a single-quoted string). 366ab72124fSSteve Price.It Double Quotes 3674b88c807SRodney W. GrimesEnclosing characters within double quotes preserves the literal 36849e11e3aSSheldon Hearnmeaning of all characters except dollarsign 369a762afe5SGiorgos Keramidas.Pq Ql $ , 37049e11e3aSSheldon Hearnbackquote 371a762afe5SGiorgos Keramidas.Pq Ql ` , 37249e11e3aSSheldon Hearnand backslash 373a762afe5SGiorgos Keramidas.Pq Ql \e . 37449e11e3aSSheldon HearnThe backslash inside double quotes is historically weird. 37549e11e3aSSheldon HearnIt remains literal unless it precedes the following characters, 37649e11e3aSSheldon Hearnwhich it serves to quote: 37749e11e3aSSheldon Hearn.Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact 37881e9cda2SRuslan Ermilov.It Li $ Ta Li ` Ta Li \&" Ta Li \e\ Ta Li \en 37949e11e3aSSheldon Hearn.El 380ab72124fSSteve Price.It Backslash 381ab72124fSSteve PriceA backslash preserves the literal meaning of the following 38249e11e3aSSheldon Hearncharacter, with the exception of the newline character 383a762afe5SGiorgos Keramidas.Pq Ql \en . 38449e11e3aSSheldon HearnA backslash preceding a newline is treated as a line continuation. 385ab72124fSSteve Price.El 386ab72124fSSteve Price.Ss Reserved Words 3874b88c807SRodney W. GrimesReserved words are words that have special meaning to the 3884b88c807SRodney W. Grimesshell and are recognized at the beginning of a line and 389eccea571SRuslan Ermilovafter a control operator. 390eccea571SRuslan ErmilovThe following are reserved words: 39149e11e3aSSheldon Hearn.Bl -column "doneXX" "elifXX" "elseXX" "untilXX" "whileX" -offset center 39281e9cda2SRuslan Ermilov.It Li \&! Ta { Ta } Ta Ic case Ta Ic do 39381e9cda2SRuslan Ermilov.It Ic done Ta Ic elif Ta Ic else Ta Ic esac Ta Ic fi 39481e9cda2SRuslan Ermilov.It Ic for Ta Ic if Ta Ic then Ta Ic until Ta Ic while 39549e11e3aSSheldon Hearn.El 396ab72124fSSteve Price.Ss Aliases 397ab72124fSSteve PriceAn alias is a name and corresponding value set using the 398c644db6aSSheldon Hearn.Ic alias 399eccea571SRuslan Ermilovbuilt-in command. 400eccea571SRuslan ErmilovWhenever a reserved word may occur (see above), 4014b88c807SRodney W. Grimesand after checking for reserved words, the shell 402e6d3cf26SSheldon Hearnchecks the word to see if it matches an alias. 403e6d3cf26SSheldon HearnIf it does, it replaces it in the input stream with its value. 404e6d3cf26SSheldon HearnFor example, if there is an alias called 40549e11e3aSSheldon Hearn.Dq Li lf 4066b15476eSSheldon Hearnwith the value 40749e11e3aSSheldon Hearn.Dq Li ls -F , 4084b88c807SRodney W. Grimesthen the input 409ab72124fSSteve Price.Bd -literal -offset indent 41049e11e3aSSheldon Hearnlf foobar 411ab72124fSSteve Price.Ed 412ab72124fSSteve Price.Pp 4134b88c807SRodney W. Grimeswould become 414ab72124fSSteve Price.Bd -literal -offset indent 41549e11e3aSSheldon Hearnls -F foobar 416ab72124fSSteve Price.Ed 417ab72124fSSteve Price.Pp 4184b88c807SRodney W. GrimesAliases provide a convenient way for naive users to 4194b88c807SRodney W. Grimescreate shorthands for commands without having to learn how 420eccea571SRuslan Ermilovto create functions with arguments. 421eccea571SRuslan ErmilovThey can also be 422eccea571SRuslan Ermilovused to create lexically obscure code. 423eccea571SRuslan ErmilovThis use is discouraged. 424ab72124fSSteve Price.Ss Commands 4254b88c807SRodney W. GrimesThe shell interprets the words it reads according to a 4264b88c807SRodney W. Grimeslanguage, the specification of which is outside the scope 427ab72124fSSteve Priceof this man page (refer to the BNF in the 428ab72124fSSteve Price.St -p1003.2 429eccea571SRuslan Ermilovdocument). 430eccea571SRuslan ErmilovEssentially though, a line is read and if 4314b88c807SRodney W. Grimesthe first word of the line (or after a control operator) 4324b88c807SRodney W. Grimesis not a reserved word, then the shell has recognized a 433eccea571SRuslan Ermilovsimple command. 434eccea571SRuslan ErmilovOtherwise, a complex command or some 4354b88c807SRodney W. Grimesother special construct may have been recognized. 436ab72124fSSteve Price.Ss Simple Commands 4374b88c807SRodney W. GrimesIf a simple command has been recognized, the shell performs 4384b88c807SRodney W. Grimesthe following actions: 439ab72124fSSteve Price.Bl -enum 440ab72124fSSteve Price.It 4416b15476eSSheldon HearnLeading words of the form 44249e11e3aSSheldon Hearn.Dq Li name=value 4436b15476eSSheldon Hearnare stripped off and assigned to the environment of 444eccea571SRuslan Ermilovthe simple command. 445eccea571SRuslan ErmilovRedirection operators and 4464b88c807SRodney W. Grimestheir arguments (as described below) are stripped 4474b88c807SRodney W. Grimesoff and saved for processing. 448ab72124fSSteve Price.It 449ab72124fSSteve PriceThe remaining words are expanded as described in 4506b15476eSSheldon Hearnthe section called 4516b15476eSSheldon Hearn.Sx Word Expansions , 4526b15476eSSheldon Hearnand the first remaining word is considered the command 453eccea571SRuslan Ermilovname and the command is located. 454eccea571SRuslan ErmilovThe remaining 4554b88c807SRodney W. Grimeswords are considered the arguments of the command. 4566b15476eSSheldon HearnIf no command name resulted, then the 45749e11e3aSSheldon Hearn.Dq Li name=value 4584b88c807SRodney W. Grimesvariable assignments recognized in 1) affect the 4594b88c807SRodney W. Grimescurrent shell. 460ab72124fSSteve Price.It 461ab72124fSSteve PriceRedirections are performed as described in 4624b88c807SRodney W. Grimesthe next section. 463ab72124fSSteve Price.El 464ab72124fSSteve Price.Ss Redirections 4654b88c807SRodney W. GrimesRedirections are used to change where a command reads its input 466eccea571SRuslan Ermilovor sends its output. 467eccea571SRuslan ErmilovIn general, redirections open, close, or 468eccea571SRuslan Ermilovduplicate an existing reference to a file. 469eccea571SRuslan ErmilovThe overall format 4704b88c807SRodney W. Grimesused for redirection is: 47149e11e3aSSheldon Hearn.Pp 472ab72124fSSteve Price.Dl [n] redir-op file 47349e11e3aSSheldon Hearn.Pp 47449e11e3aSSheldon HearnThe 47549e11e3aSSheldon Hearn.Ql redir-op 47649e11e3aSSheldon Hearnis one of the redirection operators mentioned 477eccea571SRuslan Ermilovpreviously. 478eccea571SRuslan ErmilovThe following gives some examples of how these 47949e11e3aSSheldon Hearnoperators can be used. 48049e11e3aSSheldon HearnNote that stdin and stdout are commonly used abbreviations 48149e11e3aSSheldon Hearnfor standard input and standard output respectively. 48249e11e3aSSheldon Hearn.Bl -tag -width "1234567890XX" -offset indent 48349e11e3aSSheldon Hearn.It Li [n]> file 48449e11e3aSSheldon Hearnredirect stdout (or file descriptor n) to file 48549e11e3aSSheldon Hearn.It Li [n]>| file 48649e11e3aSSheldon Hearnsame as above, but override the 48749e11e3aSSheldon Hearn.Fl C 48849e11e3aSSheldon Hearnoption 48949e11e3aSSheldon Hearn.It Li [n]>> file 49049e11e3aSSheldon Hearnappend stdout (or file descriptor n) to file 49149e11e3aSSheldon Hearn.It Li [n]< file 49249e11e3aSSheldon Hearnredirect stdin (or file descriptor n) from file 4934682f420SBrian Somers.It Li [n]<> file 4944682f420SBrian Somersredirect stdin (or file descriptor n) to and from file 49549e11e3aSSheldon Hearn.It Li [n1]<&n2 49649e11e3aSSheldon Hearnduplicate stdin (or file descriptor n1) from file descriptor n2 49749e11e3aSSheldon Hearn.It Li [n]<&- 49849e11e3aSSheldon Hearnclose stdin (or file descriptor n) 49949e11e3aSSheldon Hearn.It Li [n1]>&n2 50049e11e3aSSheldon Hearnduplicate stdout (or file descriptor n1) to file descriptor n2 50149e11e3aSSheldon Hearn.It Li [n]>&- 50249e11e3aSSheldon Hearnclose stdout (or file descriptor n) 503ab72124fSSteve Price.El 504ab72124fSSteve Price.Pp 5056b15476eSSheldon HearnThe following redirection is often called a 5066b15476eSSheldon Hearn.Dq here-document . 507ab72124fSSteve Price.Bd -literal -offset indent 5084b88c807SRodney W. Grimes[n]<< delimiter 50949e11e3aSSheldon Hearn here-doc-text 51049e11e3aSSheldon Hearn ... 5114b88c807SRodney W. Grimesdelimiter 512ab72124fSSteve Price.Ed 513ab72124fSSteve Price.Pp 5144b88c807SRodney W. GrimesAll the text on successive lines up to the delimiter is 5154b88c807SRodney W. Grimessaved away and made available to the command on standard 516eccea571SRuslan Ermilovinput, or file descriptor n if it is specified. 517eccea571SRuslan ErmilovIf the delimiter 5184b88c807SRodney W. Grimesas specified on the initial line is quoted, then the here-doc-text 5194b88c807SRodney W. Grimesis treated literally, otherwise the text is subjected to 5204b88c807SRodney W. Grimesparameter expansion, command substitution, and arithmetic 5216b15476eSSheldon Hearnexpansion (as described in the section on 5226b15476eSSheldon Hearn.Sx Word Expansions ) . 5236b15476eSSheldon HearnIf the operator is 52449e11e3aSSheldon Hearn.Dq Li <<- 5256b15476eSSheldon Hearninstead of 52649e11e3aSSheldon Hearn.Dq Li << , 5276b15476eSSheldon Hearnthen leading tabs 5284b88c807SRodney W. Grimesin the here-doc-text are stripped. 529ab72124fSSteve Price.Ss Search and Execution 530ab0a2172SSteve PriceThere are three types of commands: shell functions, 5318eed22b1SJens Schweikhardtbuilt-in commands, and normal programs. 53249e11e3aSSheldon HearnThe command is searched for (by name) in that order. 53349e11e3aSSheldon HearnThe three types of commands are all executed in a different way. 534ab72124fSSteve Price.Pp 535ab0a2172SSteve PriceWhen a shell function is executed, all of the shell positional 536ab0a2172SSteve Priceparameters (except $0, which remains unchanged) are 5374b88c807SRodney W. Grimesset to the arguments of the shell function. 5384b88c807SRodney W. GrimesThe variables which are explicitly placed in the environment of 5394b88c807SRodney W. Grimesthe command (by placing assignments to them before the 5404b88c807SRodney W. Grimesfunction name) are made local to the function and are set 541e6d3cf26SSheldon Hearnto the values given. 542e6d3cf26SSheldon HearnThen the command given in the function definition is executed. 543e6d3cf26SSheldon HearnThe positional parameters are restored to their original values 544e6d3cf26SSheldon Hearnwhen the command completes. 545ab0a2172SSteve PriceThis all occurs within the current shell. 546ab72124fSSteve Price.Pp 5478eed22b1SJens SchweikhardtShell built-in commands are executed internally to the shell, without 548ab0a2172SSteve Pricespawning a new process. 549ab72124fSSteve Price.Pp 550c644db6aSSheldon HearnOtherwise, if the command name does not match a function 5518eed22b1SJens Schweikhardtor built-in command, the command is searched for as a normal 5524b88c807SRodney W. Grimesprogram in the file system (as described in the next section). 5534b88c807SRodney W. GrimesWhen a normal program is executed, the shell runs the program, 554e6d3cf26SSheldon Hearnpassing the arguments and the environment to the program. 555e6d3cf26SSheldon HearnIf the program is not a normal executable file 556eccea571SRuslan Ermilov(i.e., if it does not begin with the 5576b15476eSSheldon Hearn.Qq magic number 5586b15476eSSheldon Hearnwhose 559ab72124fSSteve Price.Tn ASCII 5606b15476eSSheldon Hearnrepresentation is 5616b15476eSSheldon Hearn.Qq #! , 56249e11e3aSSheldon Hearnresulting in an 563b4f0f4aaSRuslan Ermilov.Er ENOEXEC 56449e11e3aSSheldon Hearnreturn value from 56549e11e3aSSheldon Hearn.Xr execve 2 ) 566e6d3cf26SSheldon Hearnthe shell will interpret the program in a subshell. 567e6d3cf26SSheldon HearnThe child shell will reinitialize itself in this case, 568e6d3cf26SSheldon Hearnso that the effect will be 569e6d3cf26SSheldon Hearnas if a new shell had been invoked to handle the ad-hoc shell script, 570e6d3cf26SSheldon Hearnexcept that the location of hashed commands located in 5714b88c807SRodney W. Grimesthe parent shell will be remembered by the child. 572ab72124fSSteve Price.Pp 573ab0a2172SSteve PriceNote that previous versions of this document 574ab0a2172SSteve Priceand the source code itself misleadingly and sporadically 575ab0a2172SSteve Pricerefer to a shell script without a magic number 5766b15476eSSheldon Hearnas a 5776b15476eSSheldon Hearn.Qq shell procedure . 578ab72124fSSteve Price.Ss Path Search 5794b88c807SRodney W. GrimesWhen locating a command, the shell first looks to see if 580eccea571SRuslan Ermilovit has a shell function by that name. 581eccea571SRuslan ErmilovThen it looks for a 582eccea571SRuslan Ermilovbuilt-in command by that name. 583eccea571SRuslan ErmilovIf a built-in command is not found, 584ab0a2172SSteve Priceone of two things happen: 585ab72124fSSteve Price.Bl -enum 586ab72124fSSteve Price.It 587ab72124fSSteve PriceCommand names containing a slash are simply executed without 588ab0a2172SSteve Priceperforming any searches. 589ab72124fSSteve Price.It 590ab72124fSSteve PriceThe shell searches each entry in 591ab72124fSSteve Price.Ev PATH 592eccea571SRuslan Ermilovin turn for the command. 593eccea571SRuslan ErmilovThe value of the 594ab72124fSSteve Price.Ev PATH 595ab72124fSSteve Pricevariable should be a series of 596eccea571SRuslan Ermiloventries separated by colons. 597eccea571SRuslan ErmilovEach entry consists of a 5984b88c807SRodney W. Grimesdirectory name. 5994b88c807SRodney W. GrimesThe current directory 600ab0a2172SSteve Pricemay be indicated implicitly by an empty directory name, 601ab0a2172SSteve Priceor explicitly by a single period. 602ab72124fSSteve Price.El 603ab72124fSSteve Price.Ss Command Exit Status 6044b88c807SRodney W. GrimesEach command has an exit status that can influence the behavior 605eccea571SRuslan Ermilovof other shell commands. 606eccea571SRuslan ErmilovThe paradigm is that a command exits 6074b88c807SRodney W. Grimeswith zero for normal or success, and non-zero for failure, 608eccea571SRuslan Ermiloverror, or a false indication. 609eccea571SRuslan ErmilovThe man page for each command 6104b88c807SRodney W. Grimesshould indicate the various exit codes and what they mean. 6118eed22b1SJens SchweikhardtAdditionally, the built-in commands return exit codes, as does 612ab0a2172SSteve Pricean executed shell function. 613c351e089SJohn Polstra.Pp 614c351e089SJohn PolstraIf a command is terminated by a signal, its exit status is 128 plus 615eccea571SRuslan Ermilovthe signal number. 616eccea571SRuslan ErmilovSignal numbers are defined in the header file 617fe08efe6SRuslan Ermilov.In sys/signal.h . 618ab72124fSSteve Price.Ss Complex Commands 6194b88c807SRodney W. GrimesComplex commands are combinations of simple commands 6204b88c807SRodney W. Grimeswith control operators or reserved words, together creating a larger complex 621eccea571SRuslan Ermilovcommand. 622eccea571SRuslan ErmilovMore generally, a command is one of the following: 623ab72124fSSteve Price.Bl -item -offset indent 624ab72124fSSteve Price.It 625ab72124fSSteve Pricesimple command 626ab72124fSSteve Price.It 627ab72124fSSteve Pricepipeline 628ab72124fSSteve Price.It 629ab72124fSSteve Pricelist or compound-list 630ab72124fSSteve Price.It 631ab72124fSSteve Pricecompound command 632ab72124fSSteve Price.It 633ab72124fSSteve Pricefunction definition 634ab72124fSSteve Price.El 635ab72124fSSteve Price.Pp 6364b88c807SRodney W. GrimesUnless otherwise stated, the exit status of a command is 6374b88c807SRodney W. Grimesthat of the last simple command executed by the command. 638ab72124fSSteve Price.Ss Pipelines 6394b88c807SRodney W. GrimesA pipeline is a sequence of one or more commands separated 640eccea571SRuslan Ermilovby the control operator |. 641eccea571SRuslan ErmilovThe standard output of all but 6424b88c807SRodney W. Grimesthe last command is connected to the standard input 643eccea571SRuslan Ermilovof the next command. 644eccea571SRuslan ErmilovThe standard output of the last 645ab0a2172SSteve Pricecommand is inherited from the shell, as usual. 646ab72124fSSteve Price.Pp 6474b88c807SRodney W. GrimesThe format for a pipeline is: 64849e11e3aSSheldon Hearn.Pp 64949e11e3aSSheldon Hearn.Dl [!] command1 [ | command2 ...] 650ab72124fSSteve Price.Pp 6514b88c807SRodney W. GrimesThe standard output of command1 is connected to the standard 652eccea571SRuslan Ermilovinput of command2. 653eccea571SRuslan ErmilovThe standard input, standard output, or 6544b88c807SRodney W. Grimesboth of a command is considered to be assigned by the 6554b88c807SRodney W. Grimespipeline before any redirection specified by redirection 6564b88c807SRodney W. Grimesoperators that are part of the command. 657ab72124fSSteve Price.Pp 6584b88c807SRodney W. GrimesIf the pipeline is not in the background (discussed later), 6594b88c807SRodney W. Grimesthe shell waits for all commands to complete. 660ab72124fSSteve Price.Pp 661eccea571SRuslan ErmilovIf the reserved word 662eccea571SRuslan Ermilov.Ic !\& 663eccea571SRuslan Ermilovdoes not precede the pipeline, the 6644b88c807SRodney W. Grimesexit status is the exit status of the last command specified 665eccea571SRuslan Ermilovin the pipeline. 666eccea571SRuslan ErmilovOtherwise, the exit status is the logical 667eccea571SRuslan ErmilovNOT of the exit status of the last command. 668eccea571SRuslan ErmilovThat is, if 6694b88c807SRodney W. Grimesthe last command returns zero, the exit status is 1; if 6704b88c807SRodney W. Grimesthe last command returns greater than zero, the exit status 6714b88c807SRodney W. Grimesis zero. 672ab72124fSSteve Price.Pp 6734b88c807SRodney W. GrimesBecause pipeline assignment of standard input or standard 6744b88c807SRodney W. Grimesoutput or both takes place before redirection, it can be 675eccea571SRuslan Ermilovmodified by redirection. 676eccea571SRuslan ErmilovFor example: 677ab72124fSSteve Price.Pp 67849e11e3aSSheldon Hearn.Dl $ command1 2>&1 | command2 679ab72124fSSteve Price.Pp 68049e11e3aSSheldon Hearnsends both the standard output and standard error of 68149e11e3aSSheldon Hearn.Ql command1 68249e11e3aSSheldon Hearnto the standard input of 68349e11e3aSSheldon Hearn.Ql command2 . 68449e11e3aSSheldon Hearn.Pp 68549e11e3aSSheldon HearnA 68612e720d7SRuslan Ermilov.Dq Li \&; 68749e11e3aSSheldon Hearnor newline terminator causes the preceding 688e918fc8fSSheldon HearnAND-OR-list 689e918fc8fSSheldon Hearn(described below in the section called 690e918fc8fSSheldon Hearn.Sx Short-Circuit List Operators ) 691e918fc8fSSheldon Hearnto be executed sequentially; 692e918fc8fSSheldon Hearnan 693e918fc8fSSheldon Hearn.Dq Li & 694e918fc8fSSheldon Hearncauses asynchronous execution of the preceding AND-OR-list. 695ab72124fSSteve Price.Pp 69649e11e3aSSheldon HearnNote that unlike some other shells, 69749e11e3aSSheldon Hearn.Nm 69849e11e3aSSheldon Hearnexecutes each process in the pipeline as a child of the 69949e11e3aSSheldon Hearn.Nm 70049e11e3aSSheldon Hearnprocess. 7018eed22b1SJens SchweikhardtShell built-in commands are the exception to this rule. 70249e11e3aSSheldon HearnThey are executed in the current shell, although they do not affect its 70349e11e3aSSheldon Hearnenvironment when used in pipelines. 70449e11e3aSSheldon Hearn.Ss Background Commands (&) 7054b88c807SRodney W. GrimesIf a command is terminated by the control operator ampersand 706a762afe5SGiorgos Keramidas.Pq Ql & , 70749e11e3aSSheldon Hearnthe shell executes the command asynchronously; 70849e11e3aSSheldon Hearnthe shell does not wait for the command to finish 70949e11e3aSSheldon Hearnbefore executing the next command. 710ab72124fSSteve Price.Pp 7114b88c807SRodney W. GrimesThe format for running a command in background is: 712ab72124fSSteve Price.Bd -literal -offset indent 7134b88c807SRodney W. Grimescommand1 & [command2 & ...] 714ab72124fSSteve Price.Ed 715ab72124fSSteve Price.Pp 7164b88c807SRodney W. GrimesIf the shell is not interactive, the standard input of an 7174b88c807SRodney W. Grimesasynchronous command is set to /dev/null. 71849e11e3aSSheldon Hearn.Ss Lists (Generally Speaking) 7194b88c807SRodney W. GrimesA list is a sequence of zero or more commands separated by 7204b88c807SRodney W. Grimesnewlines, semicolons, or ampersands, 7214b88c807SRodney W. Grimesand optionally terminated by one of these three characters. 7224b88c807SRodney W. GrimesThe commands in a 7234b88c807SRodney W. Grimeslist are executed in the order they are written. 7244b88c807SRodney W. GrimesIf command is followed by an ampersand, the shell starts the 7258eed22b1SJens Schweikhardtcommand and immediately proceeds onto the next command; 7264b88c807SRodney W. Grimesotherwise it waits for the command to terminate before 7274b88c807SRodney W. Grimesproceeding to the next one. 728ab72124fSSteve Price.Ss Short-Circuit List Operators 72949e11e3aSSheldon Hearn.Dq Li && 7306b15476eSSheldon Hearnand 73149e11e3aSSheldon Hearn.Dq Li || 7326b15476eSSheldon Hearnare AND-OR list operators. 73349e11e3aSSheldon Hearn.Dq Li && 7346b15476eSSheldon Hearnexecutes the first command, and then executes the second command 7356b15476eSSheldon Hearnif the exit status of the first command is zero. 73649e11e3aSSheldon Hearn.Dq Li || 737120ac26dSMasafumi Max NAKANEis similar, but executes the second command if the exit 7386b15476eSSheldon Hearnstatus of the first command is nonzero. 73949e11e3aSSheldon Hearn.Dq Li && 7406b15476eSSheldon Hearnand 74149e11e3aSSheldon Hearn.Dq Li || 7424b88c807SRodney W. Grimesboth have the same priority. 74349e11e3aSSheldon Hearn.Ss Flow-Control Constructs (if, while, for, case) 74449e11e3aSSheldon HearnThe syntax of the 74549e11e3aSSheldon Hearn.Ic if 74649e11e3aSSheldon Hearncommand is: 74749e11e3aSSheldon Hearn.\" 74849e11e3aSSheldon Hearn.\" XXX Use .Dl to work around broken handling of .Ic inside .Bd and .Ed . 74949e11e3aSSheldon Hearn.\" 75049e11e3aSSheldon Hearn.Dl Ic if Ar list 75149e11e3aSSheldon Hearn.Dl Ic then Ar list 75249e11e3aSSheldon Hearn.Dl [ Ic elif Ar list 75349e11e3aSSheldon Hearn.Dl Ic then Ar list ] ... 75449e11e3aSSheldon Hearn.Dl [ Ic else Ar list ] 75549e11e3aSSheldon Hearn.Dl Ic fi 756ab72124fSSteve Price.Pp 75749e11e3aSSheldon HearnThe syntax of the 75849e11e3aSSheldon Hearn.Ic while 75949e11e3aSSheldon Hearncommand is: 76049e11e3aSSheldon Hearn.Dl Ic while Ar list 76149e11e3aSSheldon Hearn.Dl Ic do Ar list 76249e11e3aSSheldon Hearn.Dl Ic done 763ab72124fSSteve Price.Pp 764ab0a2172SSteve PriceThe two lists are executed repeatedly while the exit status of the 76549e11e3aSSheldon Hearnfirst list is zero. 76649e11e3aSSheldon HearnThe 76749e11e3aSSheldon Hearn.Ic until 76849e11e3aSSheldon Hearncommand is similar, but has the word 76949e11e3aSSheldon Hearn.Ic until 77049e11e3aSSheldon Hearnin place of 77149e11e3aSSheldon Hearn.Ic while , 77249e11e3aSSheldon Hearnwhich causes it to 7734b88c807SRodney W. Grimesrepeat until the exit status of the first list is zero. 774ab72124fSSteve Price.Pp 77549e11e3aSSheldon HearnThe syntax of the 77649e11e3aSSheldon Hearn.Ic for 77749e11e3aSSheldon Hearncommand is: 77849e11e3aSSheldon Hearn.Dl Ic for Ar variable Ic in Ar word ... 77949e11e3aSSheldon Hearn.Dl Ic do Ar list 78049e11e3aSSheldon Hearn.Dl Ic done 781ab72124fSSteve Price.Pp 7824b88c807SRodney W. GrimesThe words are expanded, and then the list is executed 78349e11e3aSSheldon Hearnrepeatedly with the variable set to each word in turn. 78449e11e3aSSheldon HearnThe 78549e11e3aSSheldon Hearn.Ic do 7866b15476eSSheldon Hearnand 78749e11e3aSSheldon Hearn.Ic done 78849e11e3aSSheldon Hearncommands may be replaced with 78949e11e3aSSheldon Hearn.Dq Li { 79049e11e3aSSheldon Hearnand 79149e11e3aSSheldon Hearn.Dq Li } . 792ab72124fSSteve Price.Pp 79349e11e3aSSheldon HearnThe syntax of the 79449e11e3aSSheldon Hearn.Ic break 79549e11e3aSSheldon Hearnand 79649e11e3aSSheldon Hearn.Ic continue 79749e11e3aSSheldon Hearncommands is: 79849e11e3aSSheldon Hearn.Dl Ic break Op Ar num 79949e11e3aSSheldon Hearn.Dl Ic continue Op Ar num 800ab72124fSSteve Price.Pp 80149e11e3aSSheldon HearnThe 80249e11e3aSSheldon Hearn.Ic break 80349e11e3aSSheldon Hearncommand terminates the 80449e11e3aSSheldon Hearn.Ar num 80549e11e3aSSheldon Hearninnermost 80649e11e3aSSheldon Hearn.Ic for 80749e11e3aSSheldon Hearnor 80849e11e3aSSheldon Hearn.Ic while 80949e11e3aSSheldon Hearnloops. 81049e11e3aSSheldon HearnThe 81149e11e3aSSheldon Hearn.Ic continue 81249e11e3aSSheldon Hearncommand continues with the next iteration of the innermost loop. 8138eed22b1SJens SchweikhardtThese are implemented as built-in commands. 814ab72124fSSteve Price.Pp 81549e11e3aSSheldon HearnThe syntax of the 81649e11e3aSSheldon Hearn.Ic case 81749e11e3aSSheldon Hearncommand is 81849e11e3aSSheldon Hearn.Dl Ic case Ar word Ic in 81949e11e3aSSheldon Hearn.Dl pattern) list ;; 82049e11e3aSSheldon Hearn.Dl ... 82149e11e3aSSheldon Hearn.Dl Ic esac 822ab72124fSSteve Price.Pp 82349e11e3aSSheldon HearnThe pattern can actually be one or more patterns 82449e11e3aSSheldon Hearn(see 82549e11e3aSSheldon Hearn.Sx Shell Patterns 82649e11e3aSSheldon Hearndescribed later), 82749e11e3aSSheldon Hearnseparated by 82867135607SMartin Cracauer.Dq Li \&| 8296b15476eSSheldon Hearncharacters. 830ab72124fSSteve Price.Ss Grouping Commands Together 8314b88c807SRodney W. GrimesCommands may be grouped by writing either 832ab72124fSSteve Price.Bd -literal -offset indent 8334b88c807SRodney W. Grimes(list) 834ab72124fSSteve Price.Ed 835ab72124fSSteve Price.Pp 8364b88c807SRodney W. Grimesor 837ab72124fSSteve Price.Bd -literal -offset indent 8384b88c807SRodney W. Grimes{ list; } 839ab72124fSSteve Price.Ed 840ab72124fSSteve Price.Pp 84149e11e3aSSheldon HearnThe first form executes the commands in a subshell. 8428eed22b1SJens SchweikhardtNote that built-in commands thus executed do not affect the current shell. 84349e11e3aSSheldon HearnThe second form does not fork another shell, 84449e11e3aSSheldon Hearnso it is slightly more efficient. 84549e11e3aSSheldon HearnGrouping commands together this way allows the user to 846ab0a2172SSteve Priceredirect their output as though they were one program: 847ab72124fSSteve Price.Bd -literal -offset indent 848ee7dc416SSteve Price{ echo -n "hello"; echo " world"; } > greeting 849ab72124fSSteve Price.Ed 850ab72124fSSteve Price.Ss Functions 8514b88c807SRodney W. GrimesThe syntax of a function definition is 852ab72124fSSteve Price.Bd -literal -offset indent 8534b88c807SRodney W. Grimesname ( ) command 854ab72124fSSteve Price.Ed 855ab72124fSSteve Price.Pp 8564b88c807SRodney W. GrimesA function definition is an executable statement; when 8574b88c807SRodney W. Grimesexecuted it installs a function named name and returns an 858eccea571SRuslan Ermilovexit status of zero. 859eccea571SRuslan ErmilovThe command is normally a list 8606b15476eSSheldon Hearnenclosed between 86149e11e3aSSheldon Hearn.Dq Li { 8626b15476eSSheldon Hearnand 86349e11e3aSSheldon Hearn.Dq Li } . 864ab72124fSSteve Price.Pp 8654b88c807SRodney W. GrimesVariables may be declared to be local to a function by 86649e11e3aSSheldon Hearnusing the 86749e11e3aSSheldon Hearn.Ic local 86849e11e3aSSheldon Hearncommand. 86949e11e3aSSheldon HearnThis should appear as the first statement of a function, 87049e11e3aSSheldon Hearnand the syntax is: 87149e11e3aSSheldon Hearn.Bd -ragged -offset indent 87249e11e3aSSheldon Hearn.Ic local 87381e9cda2SRuslan Ermilov.Op Ar variable ... 87449e11e3aSSheldon Hearn.Op Ar - 875ab72124fSSteve Price.Ed 876ab72124fSSteve Price.Pp 87749e11e3aSSheldon HearnThe 87849e11e3aSSheldon Hearn.Ic local 8798eed22b1SJens Schweikhardtcommand is implemented as a built-in command. 880ab72124fSSteve Price.Pp 8814b88c807SRodney W. GrimesWhen a variable is made local, it inherits the initial 8824b88c807SRodney W. Grimesvalue and exported and readonly flags from the variable 8834b88c807SRodney W. Grimeswith the same name in the surrounding scope, if there is 884eccea571SRuslan Ermilovone. 885eccea571SRuslan ErmilovOtherwise, the variable is initially unset. 886eccea571SRuslan ErmilovThe shell 887e918fc8fSSheldon Hearnuses dynamic scoping, so that if the variable 888e918fc8fSSheldon Hearn.Em x 889e918fc8fSSheldon Hearnis made local to function 890e918fc8fSSheldon Hearn.Em f , 891e918fc8fSSheldon Hearnwhich then calls function 892e918fc8fSSheldon Hearn.Em g , 893e918fc8fSSheldon Hearnreferences to the variable 894e918fc8fSSheldon Hearn.Em x 895e918fc8fSSheldon Hearnmade inside 896e918fc8fSSheldon Hearn.Em g 897e918fc8fSSheldon Hearnwill refer to the variable 898e918fc8fSSheldon Hearn.Em x 899e918fc8fSSheldon Hearndeclared inside 900e918fc8fSSheldon Hearn.Em f , 901e918fc8fSSheldon Hearnnot to the global variable named 902e918fc8fSSheldon Hearn.Em x . 903ab72124fSSteve Price.Pp 9046b4bbd8aSCeri DaviesThe only special parameter that can be made local is 90549e11e3aSSheldon Hearn.Dq Li - . 9066b15476eSSheldon HearnMaking 90749e11e3aSSheldon Hearn.Dq Li - 9086b15476eSSheldon Hearnlocal causes any shell options that are 9094b88c807SRodney W. Grimeschanged via the set command inside the function to be 9104b88c807SRodney W. Grimesrestored to their original values when the function 9114b88c807SRodney W. Grimesreturns. 912ab72124fSSteve Price.Pp 91349e11e3aSSheldon HearnThe syntax of the 91449e11e3aSSheldon Hearn.Ic return 91549e11e3aSSheldon Hearncommand is 91649e11e3aSSheldon Hearn.Bd -ragged -offset indent 91749e11e3aSSheldon Hearn.Ic return 91849e11e3aSSheldon Hearn.Op Ar exitstatus 919ab72124fSSteve Price.Ed 920ab72124fSSteve Price.Pp 9214ad8968aSBrian FeldmanIt terminates the current executional scope, returning from the previous 9224ad8968aSBrian Feldmannested function, sourced script, or shell instance, in that order. 92349e11e3aSSheldon HearnThe 92449e11e3aSSheldon Hearn.Ic return 9258eed22b1SJens Schweikhardtcommand is implemented as a built-in command. 926ab72124fSSteve Price.Ss Variables and Parameters 927eccea571SRuslan ErmilovThe shell maintains a set of parameters. 928eccea571SRuslan ErmilovA parameter 929eccea571SRuslan Ermilovdenoted by a name is called a variable. 930eccea571SRuslan ErmilovWhen starting up, 9314b88c807SRodney W. Grimesthe shell turns all the environment variables into shell 932eccea571SRuslan Ermilovvariables. 933eccea571SRuslan ErmilovNew variables can be set using the form 934ab72124fSSteve Price.Bd -literal -offset indent 9354b88c807SRodney W. Grimesname=value 936ab72124fSSteve Price.Ed 937ab72124fSSteve Price.Pp 9384b88c807SRodney W. GrimesVariables set by the user must have a name consisting solely 93949e11e3aSSheldon Hearnof alphabetics, numerics, and underscores. 94049e11e3aSSheldon HearnThe first letter of a variable name must not be numeric. 94149e11e3aSSheldon HearnA parameter can also be denoted by a number 9424b88c807SRodney W. Grimesor a special character as explained below. 943ab72124fSSteve Price.Ss Positional Parameters 94449e11e3aSSheldon HearnA positional parameter is a parameter denoted by a number greater than zero. 945ab72124fSSteve PriceThe shell sets these initially to the values of its command line 946eccea571SRuslan Ermilovarguments that follow the name of the shell script. 947eccea571SRuslan ErmilovThe 948c644db6aSSheldon Hearn.Ic set 9498eed22b1SJens Schweikhardtbuilt-in command can also be used to set or reset them. 950ab72124fSSteve Price.Ss Special Parameters 95143d6677bSAlfred PerlsteinA special parameter is a parameter denoted by a special one-character 95243d6677bSAlfred Perlsteinname. 95343d6677bSAlfred PerlsteinThe special parameters recognized by the 95443d6677bSAlfred Perlstein.Nm 95543d6677bSAlfred Perlsteinshell of 95643d6677bSAlfred Perlstein.Fx 95743d6677bSAlfred Perlsteinare shown in the following list, exactly as they would appear in input 95843d6677bSAlfred Perlsteintyped by the user or in the source of a shell script. 959ab72124fSSteve Price.Bl -hang 96043d6677bSAlfred Perlstein.It Li $* 961eccea571SRuslan ErmilovExpands to the positional parameters, starting from one. 962eccea571SRuslan ErmilovWhen 9634b88c807SRodney W. Grimesthe expansion occurs within a double-quoted string 9644b88c807SRodney W. Grimesit expands to a single field with the value of each parameter 96549e11e3aSSheldon Hearnseparated by the first character of the 96649e11e3aSSheldon Hearn.Ev IFS 96749e11e3aSSheldon Hearnvariable, 96849e11e3aSSheldon Hearnor by a 96949e11e3aSSheldon Hearn.Aq space 97049e11e3aSSheldon Hearnif 97149e11e3aSSheldon Hearn.Ev IFS 97249e11e3aSSheldon Hearnis unset. 97343d6677bSAlfred Perlstein.It Li $@ 974eccea571SRuslan ErmilovExpands to the positional parameters, starting from one. 975eccea571SRuslan ErmilovWhen 9764b88c807SRodney W. Grimesthe expansion occurs within double-quotes, each positional 9774b88c807SRodney W. Grimesparameter expands as a separate argument. 9784b88c807SRodney W. GrimesIf there are no positional parameters, the 979e918fc8fSSheldon Hearnexpansion of 980e918fc8fSSheldon Hearn.Li @ 981e918fc8fSSheldon Hearngenerates zero arguments, even when 982e918fc8fSSheldon Hearn.Li @ 983eccea571SRuslan Ermilovis double-quoted. 984eccea571SRuslan ErmilovWhat this basically means, for example, is 9856b15476eSSheldon Hearnif $1 is 9866b15476eSSheldon Hearn.Dq abc 9876b15476eSSheldon Hearnand $2 is 9886b15476eSSheldon Hearn.Dq def ghi , 9896b15476eSSheldon Hearnthen 990e918fc8fSSheldon Hearn.Qq Li $@ 9916b15476eSSheldon Hearnexpands to 9924b88c807SRodney W. Grimesthe two arguments: 993ab72124fSSteve Price.Bd -literal -offset indent 9944b88c807SRodney W. Grimes"abc" "def ghi" 995ab72124fSSteve Price.Ed 99643d6677bSAlfred Perlstein.It Li $# 9974b88c807SRodney W. GrimesExpands to the number of positional parameters. 99843d6677bSAlfred Perlstein.It Li $\&? 9994b88c807SRodney W. GrimesExpands to the exit status of the most recent pipeline. 100043d6677bSAlfred Perlstein.It Li $- 1001ab72124fSSteve Price(hyphen) Expands to the current option flags (the single-letter 10024b88c807SRodney W. Grimesoption names concatenated into a string) as specified on 10038eed22b1SJens Schweikhardtinvocation, by the set built-in command, or implicitly 10044b88c807SRodney W. Grimesby the shell. 100543d6677bSAlfred Perlstein.It Li $$ 1006eccea571SRuslan ErmilovExpands to the process ID of the invoked shell. 1007eccea571SRuslan ErmilovA subshell 10084b88c807SRodney W. Grimesretains the same value of $ as its parent. 100943d6677bSAlfred Perlstein.It Li $\&! 10104b88c807SRodney W. GrimesExpands to the process ID of the most recent background 1011eccea571SRuslan Ermilovcommand executed from the current shell. 1012eccea571SRuslan ErmilovFor a 10134b88c807SRodney W. Grimespipeline, the process ID is that of the last command in the 10144b88c807SRodney W. Grimespipeline. 101543d6677bSAlfred Perlstein.It Li $0 1016ab72124fSSteve Price(zero) Expands to the name of the shell or shell script. 1017ab72124fSSteve Price.El 1018ab72124fSSteve Price.Ss Word Expansions 10194b88c807SRodney W. GrimesThis clause describes the various expansions that are 1020eccea571SRuslan Ermilovperformed on words. 1021eccea571SRuslan ErmilovNot all expansions are performed on 10224b88c807SRodney W. Grimesevery word, as explained later. 1023ab72124fSSteve Price.Pp 10244b88c807SRodney W. GrimesTilde expansions, parameter expansions, command substitutions, 10254b88c807SRodney W. Grimesarithmetic expansions, and quote removals that occur within 1026eccea571SRuslan Ermilova single word expand to a single field. 1027eccea571SRuslan ErmilovIt is only field 10284b88c807SRodney W. Grimessplitting or pathname expansion that can create multiple 1029e6d3cf26SSheldon Hearnfields from a single word. 1030e6d3cf26SSheldon HearnThe single exception to this rule is 1031e918fc8fSSheldon Hearnthe expansion of the special parameter 1032e918fc8fSSheldon Hearn.Li @ 1033e918fc8fSSheldon Hearnwithin double-quotes, 1034e6d3cf26SSheldon Hearnas was described above. 1035ab72124fSSteve Price.Pp 10364b88c807SRodney W. GrimesThe order of word expansion is: 1037ab72124fSSteve Price.Bl -enum 1038ab72124fSSteve Price.It 1039ab72124fSSteve PriceTilde Expansion, Parameter Expansion, Command Substitution, 10404b88c807SRodney W. GrimesArithmetic Expansion (these all occur at the same time). 1041ab72124fSSteve Price.It 104249e11e3aSSheldon HearnField Splitting is performed on fields generated by step (1) 104349e11e3aSSheldon Hearnunless the 104449e11e3aSSheldon Hearn.Ev IFS 104549e11e3aSSheldon Hearnvariable is null. 1046ab72124fSSteve Price.It 104749e11e3aSSheldon HearnPathname Expansion (unless the 104849e11e3aSSheldon Hearn.Fl f 104949e11e3aSSheldon Hearnoption is in effect). 1050ab72124fSSteve Price.It 1051ab72124fSSteve PriceQuote Removal. 1052ab72124fSSteve Price.El 1053ab72124fSSteve Price.Pp 105449e11e3aSSheldon HearnThe 105549e11e3aSSheldon Hearn.Dq Li $ 105649e11e3aSSheldon Hearncharacter is used to introduce parameter expansion, command 10574b88c807SRodney W. Grimessubstitution, or arithmetic evaluation. 1058ab72124fSSteve Price.Ss Tilde Expansion (substituting a user's home directory) 105949e11e3aSSheldon HearnA word beginning with an unquoted tilde character 1060a762afe5SGiorgos Keramidas.Pq Ql ~ 106149e11e3aSSheldon Hearnis 106249e11e3aSSheldon Hearnsubjected to tilde expansion. 106349e11e3aSSheldon HearnAll the characters up to a slash 1064a762afe5SGiorgos Keramidas.Pq Ql / 106549e11e3aSSheldon Hearnor the end of the word are treated as a username 1066eccea571SRuslan Ermilovand are replaced with the user's home directory. 1067eccea571SRuslan ErmilovIf the 10684b88c807SRodney W. Grimesusername is missing (as in ~/foobar), the tilde is replaced 10694b88c807SRodney W. Grimeswith the value of the HOME variable (the current user's 10704b88c807SRodney W. Grimeshome directory). 1071ab72124fSSteve Price.Ss Parameter Expansion 10724b88c807SRodney W. GrimesThe format for parameter expansion is as follows: 1073ab72124fSSteve Price.Bd -literal -offset indent 10744b88c807SRodney W. Grimes${expression} 1075ab72124fSSteve Price.Ed 1076ab72124fSSteve Price.Pp 107749e11e3aSSheldon Hearnwhere expression consists of all characters until the matching 107849e11e3aSSheldon Hearn.Dq Li } . 107949e11e3aSSheldon HearnAny 108049e11e3aSSheldon Hearn.Dq Li } 10814b88c807SRodney W. Grimesescaped by a backslash or within a quoted string, and characters in 10824b88c807SRodney W. Grimesembedded arithmetic expansions, command substitutions, and variable 108349e11e3aSSheldon Hearnexpansions, are not examined in determining the matching 108449e11e3aSSheldon Hearn.Dq Li } . 1085ab72124fSSteve Price.Pp 10864b88c807SRodney W. GrimesThe simplest form for parameter expansion is: 1087ab72124fSSteve Price.Bd -literal -offset indent 10884b88c807SRodney W. Grimes${parameter} 1089ab72124fSSteve Price.Ed 1090ab72124fSSteve Price.Pp 10914b88c807SRodney W. GrimesThe value, if any, of parameter is substituted. 1092ab72124fSSteve Price.Pp 10934b88c807SRodney W. GrimesThe parameter name or symbol can be enclosed in braces, which are 10944b88c807SRodney W. Grimesoptional except for positional parameters with more than one digit or 10954b88c807SRodney W. Grimeswhen parameter is followed by a character that could be interpreted as 10964b88c807SRodney W. Grimespart of the name. 1097ab72124fSSteve PriceIf a parameter expansion occurs inside double-quotes: 1098ab72124fSSteve Price.Bl -enum 1099ab72124fSSteve Price.It 1100ab72124fSSteve PricePathname expansion is not performed on the results of the 11014b88c807SRodney W. Grimesexpansion. 1102ab72124fSSteve Price.It 1103ab72124fSSteve PriceField splitting is not performed on the results of the 1104e918fc8fSSheldon Hearnexpansion, with the exception of the special parameter 1105e918fc8fSSheldon Hearn.Li @ . 1106ab72124fSSteve Price.El 1107ab72124fSSteve Price.Pp 11084b88c807SRodney W. GrimesIn addition, a parameter expansion can be modified by using one of the 11094b88c807SRodney W. Grimesfollowing formats. 111081e9cda2SRuslan Ermilov.Bl -tag -width indent 1111ab72124fSSteve Price.It Li ${parameter:-word} 1112eccea571SRuslan ErmilovUse Default Values. 1113eccea571SRuslan ErmilovIf parameter is unset or 11144b88c807SRodney W. Grimesnull, the expansion of word is 11154b88c807SRodney W. Grimessubstituted; otherwise, the value of 11164b88c807SRodney W. Grimesparameter is substituted. 1117ab72124fSSteve Price.It Li ${parameter:=word} 1118eccea571SRuslan ErmilovAssign Default Values. 1119eccea571SRuslan ErmilovIf parameter is unset 11204b88c807SRodney W. Grimesor null, the expansion of word is 1121eccea571SRuslan Ermilovassigned to parameter. 1122eccea571SRuslan ErmilovIn all cases, the 11234b88c807SRodney W. Grimesfinal value of parameter is 1124eccea571SRuslan Ermilovsubstituted. 1125eccea571SRuslan ErmilovOnly variables, not positional 11264b88c807SRodney W. Grimesparameters or special parameters, can be 11274b88c807SRodney W. Grimesassigned in this way. 1128ab72124fSSteve Price.It Li ${parameter:?[word]} 1129eccea571SRuslan ErmilovIndicate Error if Null or Unset. 1130eccea571SRuslan ErmilovIf 11314b88c807SRodney W. Grimesparameter is unset or null, the expansion of 11324b88c807SRodney W. Grimesword (or a message indicating it is unset if 11334b88c807SRodney W. Grimesword is omitted) is written to standard 11344b88c807SRodney W. Grimeserror and the shell exits with a nonzero 1135e6d3cf26SSheldon Hearnexit status. 1136e6d3cf26SSheldon HearnOtherwise, the value of 1137eccea571SRuslan Ermilovparameter is substituted. 1138eccea571SRuslan ErmilovAn 11394b88c807SRodney W. Grimesinteractive shell need not exit. 1140ab72124fSSteve Price.It Li ${parameter:+word} 1141eccea571SRuslan ErmilovUse Alternate Value. 1142eccea571SRuslan ErmilovIf parameter is unset 11434b88c807SRodney W. Grimesor null, null is substituted; 11444b88c807SRodney W. Grimesotherwise, the expansion of word is 11454b88c807SRodney W. Grimessubstituted. 11461413f7deSTony Finch.El 1147ab72124fSSteve Price.Pp 11484b88c807SRodney W. GrimesIn the parameter expansions shown previously, use of the colon in the 11494b88c807SRodney W. Grimesformat results in a test for a parameter that is unset or null; omission 11504b88c807SRodney W. Grimesof the colon results in a test for a parameter that is only unset. 11511413f7deSTony Finch.Bl -tag -width indent 1152ab72124fSSteve Price.It Li ${#parameter} 1153eccea571SRuslan ErmilovString Length. 1154eccea571SRuslan ErmilovThe length in characters of 11554b88c807SRodney W. Grimesthe value of parameter. 115671337c33SSheldon Hearn.El 1157ab72124fSSteve Price.Pp 11584b88c807SRodney W. GrimesThe following four varieties of parameter expansion provide for substring 115949e11e3aSSheldon Hearnprocessing. 116049e11e3aSSheldon HearnIn each case, pattern matching notation 116149e11e3aSSheldon Hearn(see 116249e11e3aSSheldon Hearn.Sx Shell Patterns ) , 116349e11e3aSSheldon Hearnrather than regular expression notation, 116449e11e3aSSheldon Hearnis used to evaluate the patterns. 1165e918fc8fSSheldon HearnIf parameter is one of the special parameters 1166e918fc8fSSheldon Hearn.Li * 116749e11e3aSSheldon Hearnor 1168e918fc8fSSheldon Hearn.Li @ , 116949e11e3aSSheldon Hearnthe result of the expansion is unspecified. 11704b88c807SRodney W. GrimesEnclosing the full parameter expansion string in double-quotes does not 11714b88c807SRodney W. Grimescause the following four varieties of pattern characters to be quoted, 11724b88c807SRodney W. Grimeswhereas quoting characters within the braces has this effect. 117381e9cda2SRuslan Ermilov.Bl -tag -width indent 1174ab72124fSSteve Price.It Li ${parameter%word} 1175eccea571SRuslan ErmilovRemove Smallest Suffix Pattern. 1176eccea571SRuslan ErmilovThe word 1177eccea571SRuslan Ermilovis expanded to produce a pattern. 1178eccea571SRuslan ErmilovThe 11794b88c807SRodney W. Grimesparameter expansion then results in 11804b88c807SRodney W. Grimesparameter, with the smallest portion of the 11814b88c807SRodney W. Grimessuffix matched by the pattern deleted. 1182ab72124fSSteve Price.It Li ${parameter%%word} 1183eccea571SRuslan ErmilovRemove Largest Suffix Pattern. 1184eccea571SRuslan ErmilovThe word 1185eccea571SRuslan Ermilovis expanded to produce a pattern. 1186eccea571SRuslan ErmilovThe 11874b88c807SRodney W. Grimesparameter expansion then results in 11884b88c807SRodney W. Grimesparameter, with the largest portion of the 11894b88c807SRodney W. Grimessuffix matched by the pattern deleted. 1190ab72124fSSteve Price.It Li ${parameter#word} 1191eccea571SRuslan ErmilovRemove Smallest Prefix Pattern. 1192eccea571SRuslan ErmilovThe word 1193eccea571SRuslan Ermilovis expanded to produce a pattern. 1194eccea571SRuslan ErmilovThe 11954b88c807SRodney W. Grimesparameter expansion then results in 11964b88c807SRodney W. Grimesparameter, with the smallest portion of the 11974b88c807SRodney W. Grimesprefix matched by the pattern deleted. 1198ab72124fSSteve Price.It Li ${parameter##word} 1199eccea571SRuslan ErmilovRemove Largest Prefix Pattern. 1200eccea571SRuslan ErmilovThe word 1201eccea571SRuslan Ermilovis expanded to produce a pattern. 1202eccea571SRuslan ErmilovThe 12034b88c807SRodney W. Grimesparameter expansion then results in 12044b88c807SRodney W. Grimesparameter, with the largest portion of the 12054b88c807SRodney W. Grimesprefix matched by the pattern deleted. 1206ab72124fSSteve Price.El 1207ab72124fSSteve Price.Ss Command Substitution 12084b88c807SRodney W. GrimesCommand substitution allows the output of a command to be substituted in 1209eccea571SRuslan Ermilovplace of the command name itself. 1210eccea571SRuslan ErmilovCommand substitution occurs when 12114b88c807SRodney W. Grimesthe command is enclosed as follows: 1212ab72124fSSteve Price.Bd -literal -offset indent 12134b88c807SRodney W. Grimes$(command) 1214ab72124fSSteve Price.Ed 1215ab72124fSSteve Price.Pp 121649e11e3aSSheldon Hearnor the backquoted version: 1217ab72124fSSteve Price.Bd -literal -offset indent 12184b88c807SRodney W. Grimes`command` 1219ab72124fSSteve Price.Ed 1220ab72124fSSteve Price.Pp 12214b88c807SRodney W. GrimesThe shell expands the command substitution by executing command in a 12224b88c807SRodney W. Grimessubshell environment and replacing the command substitution 122349e11e3aSSheldon Hearnwith the standard output of the command, 122449e11e3aSSheldon Hearnremoving sequences of one or more newlines at the end of the substitution. 122549e11e3aSSheldon HearnEmbedded newlines before the end of the output are not removed; 122649e11e3aSSheldon Hearnhowever, during field splitting, they may be translated into spaces 122749e11e3aSSheldon Hearndepending on the value of 122849e11e3aSSheldon Hearn.Ev IFS 122949e11e3aSSheldon Hearnand the quoting that is in effect. 1230ab72124fSSteve Price.Ss Arithmetic Expansion 12314b88c807SRodney W. GrimesArithmetic expansion provides a mechanism for evaluating an arithmetic 1232e6d3cf26SSheldon Hearnexpression and substituting its value. 1233e6d3cf26SSheldon HearnThe format for arithmetic expansion is as follows: 1234ab72124fSSteve Price.Bd -literal -offset indent 12354b88c807SRodney W. Grimes$((expression)) 1236ab72124fSSteve Price.Ed 1237ab72124fSSteve Price.Pp 12384b88c807SRodney W. GrimesThe expression is treated as if it were in double-quotes, except 1239eccea571SRuslan Ermilovthat a double-quote inside the expression is not treated specially. 1240eccea571SRuslan ErmilovThe 12414b88c807SRodney W. Grimesshell expands all tokens in the expression for parameter expansion, 12424b88c807SRodney W. Grimescommand substitution, and quote removal. 1243ab72124fSSteve Price.Pp 12444b88c807SRodney W. GrimesNext, the shell treats this as an arithmetic expression and 12454b88c807SRodney W. Grimessubstitutes the value of the expression. 1246ab72124fSSteve Price.Ss White Space Splitting (Field Splitting) 12474b88c807SRodney W. GrimesAfter parameter expansion, command substitution, and 12484b88c807SRodney W. Grimesarithmetic expansion the shell scans the results of 12494b88c807SRodney W. Grimesexpansions and substitutions that did not occur in double-quotes for 12504b88c807SRodney W. Grimesfield splitting and multiple fields can result. 1251ab72124fSSteve Price.Pp 125249e11e3aSSheldon HearnThe shell treats each character of the 125349e11e3aSSheldon Hearn.Ev IFS 125449e11e3aSSheldon Hearnas a delimiter and uses 12554b88c807SRodney W. Grimesthe delimiters to split the results of parameter expansion and command 12564b88c807SRodney W. Grimessubstitution into fields. 1257ab72124fSSteve Price.Ss Pathname Expansion (File Name Generation) 125849e11e3aSSheldon HearnUnless the 125949e11e3aSSheldon Hearn.Fl f 126049e11e3aSSheldon Hearnoption is set, 126149e11e3aSSheldon Hearnfile name generation is performed 1262eccea571SRuslan Ermilovafter word splitting is complete. 1263eccea571SRuslan ErmilovEach word is 1264eccea571SRuslan Ermilovviewed as a series of patterns, separated by slashes. 1265eccea571SRuslan ErmilovThe 12664b88c807SRodney W. Grimesprocess of expansion replaces the word with the names of 12674b88c807SRodney W. Grimesall existing files whose names can be formed by replacing 12684b88c807SRodney W. Grimeseach pattern with a string that matches the specified pattern. 1269ab0a2172SSteve PriceThere are two restrictions on this: first, a pattern cannot match 1270ab0a2172SSteve Pricea string containing a slash, and second, 12714b88c807SRodney W. Grimesa pattern cannot match a string starting with a period 12724b88c807SRodney W. Grimesunless the first character of the pattern is a period. 12734b88c807SRodney W. GrimesThe next section describes the patterns used for both 1274ab72124fSSteve PricePathname Expansion and the 1275c644db6aSSheldon Hearn.Ic case 1276ab72124fSSteve Pricecommand. 1277ab72124fSSteve Price.Ss Shell Patterns 1278f434d1dfSAdam DavidA pattern consists of normal characters, which match themselves, 127949e11e3aSSheldon Hearnand meta-characters. 128049e11e3aSSheldon HearnThe meta-characters are 12811586940eSRuslan Ermilov.Dq Li \&! , 128249e11e3aSSheldon Hearn.Dq Li * , 12831586940eSRuslan Ermilov.Dq Li \&? , 12846b15476eSSheldon Hearnand 128549e11e3aSSheldon Hearn.Dq Li [ . 12866b15476eSSheldon HearnThese characters lose their special meanings if they are quoted. 12876b15476eSSheldon HearnWhen command or variable substitution is performed and the dollar sign 12886b15476eSSheldon Hearnor back quotes are not double-quoted, the value of the 12894b88c807SRodney W. Grimesvariable or the output of the command is scanned for these 12904b88c807SRodney W. Grimescharacters and they are turned into meta-characters. 1291ab72124fSSteve Price.Pp 12926b15476eSSheldon HearnAn asterisk 1293a762afe5SGiorgos Keramidas.Pq Ql * 1294e918fc8fSSheldon Hearnmatches any string of characters. 1295e918fc8fSSheldon HearnA question mark 1296a762afe5SGiorgos Keramidas.Pq Ql \&? 1297e918fc8fSSheldon Hearnmatches any single character. 1298e6d3cf26SSheldon HearnA left bracket 1299a762afe5SGiorgos Keramidas.Pq Ql [ 1300e6d3cf26SSheldon Hearnintroduces a character class. 1301e6d3cf26SSheldon HearnThe end of the character class is indicated by a 130249e11e3aSSheldon Hearn.Dq Li \&] ; 13036b15476eSSheldon Hearnif the 130449e11e3aSSheldon Hearn.Dq Li \&] 13056b15476eSSheldon Hearnis missing then the 130649e11e3aSSheldon Hearn.Dq Li [ 13076b15476eSSheldon Hearnmatches a 130849e11e3aSSheldon Hearn.Dq Li [ 1309e6d3cf26SSheldon Hearnrather than introducing a character class. 1310e6d3cf26SSheldon HearnA character class matches any of the characters between the square brackets. 1311e6d3cf26SSheldon HearnA range of characters may be specified using a minus sign. 1312e918fc8fSSheldon HearnThe character class may be complemented by making an exclamation point 1313a762afe5SGiorgos Keramidas.Pq Ql !\& 1314e918fc8fSSheldon Hearnthe first character of the character class. 1315ab72124fSSteve Price.Pp 13166b15476eSSheldon HearnTo include a 131712e720d7SRuslan Ermilov.Dq Li \&] 1318e6d3cf26SSheldon Hearnin a character class, make it the first character listed 1319e6d3cf26SSheldon Hearn(after the 13201586940eSRuslan Ermilov.Dq Li \&! , 1321e6d3cf26SSheldon Hearnif any). 1322e918fc8fSSheldon HearnTo include a 1323e918fc8fSSheldon Hearn.Dq Li - , 1324e918fc8fSSheldon Hearnmake it the first or last character listed. 13258eed22b1SJens Schweikhardt.Ss Built-in Commands 1326c644db6aSSheldon HearnThis section lists the commands which 13278eed22b1SJens Schweikhardtare built-in because they need to perform some operation 1328eccea571SRuslan Ermilovthat cannot be performed by a separate process. 1329eccea571SRuslan ErmilovIn addition to 13308eed22b1SJens Schweikhardtthese, a built-in version of the 1331d90c5c4aSAkinori MUSHA.Xr test 1 1332018d9f62SAkinori MUSHAcommand is provided for efficiency. 133381e9cda2SRuslan Ermilov.Bl -tag -width indent 1334d0353b83SRuslan Ermilov.It Ic \&: 1335aa9caaf6SPeter WemmA null command that returns a 0 (true) exit value. 1336d0353b83SRuslan Ermilov.It Ic \&. Ar file 1337aa9caaf6SPeter WemmThe commands in the specified file are read and executed by the shell. 13384ad8968aSBrian FeldmanThe 13394ad8968aSBrian Feldman.Ic return 13404ad8968aSBrian Feldmancommand may be used to return to the 13414ad8968aSBrian Feldman.Ic \&. 13424ad8968aSBrian Feldmancommand's caller. 13436466945aSJohn PolstraIf 13446466945aSJohn Polstra.Ar file 13456466945aSJohn Polstracontains any 134649e11e3aSSheldon Hearn.Dq / 1347eccea571SRuslan Ermilovcharacters, it is used as is. 1348eccea571SRuslan ErmilovOtherwise, the shell searches the 13496466945aSJohn Polstra.Ev PATH 1350eccea571SRuslan Ermilovfor the file. 1351eccea571SRuslan ErmilovIf it is not found in the 13526466945aSJohn Polstra.Ev PATH , 13536466945aSJohn Polstrait is sought in the current working directory. 135449e11e3aSSheldon Hearn.It Ic alias Op Ar name ... 135581e9cda2SRuslan Ermilov.It Ic alias Op Ar name Ns = Ns Ar string ... 135649e11e3aSSheldon HearnIf 1357d0353b83SRuslan Ermilov.Ar name Ns = Ns Ar string 135849e11e3aSSheldon Hearnis specified, the shell defines the alias 135949e11e3aSSheldon Hearn.Ar name 13606b15476eSSheldon Hearnwith value 136149e11e3aSSheldon Hearn.Ar string . 13626b15476eSSheldon HearnIf just 136349e11e3aSSheldon Hearn.Ar name 13646b15476eSSheldon Hearnis specified, the value of the alias 136549e11e3aSSheldon Hearn.Ar name 13666b15476eSSheldon Hearnis printed. 136749e11e3aSSheldon HearnWith no arguments, the 136849e11e3aSSheldon Hearn.Ic alias 13698eed22b1SJens Schweikhardtbuilt-in command prints the names and values of all defined aliases 137049e11e3aSSheldon Hearn(see 137149e11e3aSSheldon Hearn.Ic unalias ) . 1372e5341cbbSTim J. RobbinsAlias values are written with appropriate quoting so that they are 13739ba31ca0SRuslan Ermilovsuitable for re-input to the shell. 137449e11e3aSSheldon Hearn.It Ic bg Op Ar job ... 137549e11e3aSSheldon HearnContinue the specified jobs 137649e11e3aSSheldon Hearn(or the current job if no jobs are given) 137749e11e3aSSheldon Hearnin the background. 1378df9e587bSTim J. Robbins.It Ic builtin Ar cmd Op Ar arg ... 13798eed22b1SJens SchweikhardtExecute the specified built-in command, 138049e11e3aSSheldon Hearn.Ar cmd . 138149e11e3aSSheldon HearnThis is useful when the user wishes to override a shell function 13828eed22b1SJens Schweikhardtwith the same name as a built-in command. 1383088acf90STim J. Robbins.It Ic bind Oo Fl aeklrsv Oc Oo Ar key Oo Ar command Oc Oc 1384088acf90STim J. RobbinsList or alter key bindings for the line editor. 1385088acf90STim J. RobbinsThis command is documented in 1386088acf90STim J. Robbins.Xr editrc 5 . 1387d74e011fSRuslan Ermilov.It Ic cd Oo Fl L | P Oc Op Ar directory 138849e11e3aSSheldon HearnSwitch to the specified 138949e11e3aSSheldon Hearn.Ar directory , 139049e11e3aSSheldon Hearnor to the directory specified in the 139149e11e3aSSheldon Hearn.Ev HOME 139249e11e3aSSheldon Hearnenvironment variable if no 139349e11e3aSSheldon Hearn.Ar directory 139449e11e3aSSheldon Hearnis specified. 139549e11e3aSSheldon HearnIf 139649e11e3aSSheldon Hearn.Ar directory 1397029c8ee4STim J. Robbinsdoes not begin with 13989ba31ca0SRuslan Ermilov.Pa / , \&. , 139949e11e3aSSheldon Hearnor 1400029c8ee4STim J. Robbins.Pa .. , 140149e11e3aSSheldon Hearnthen the directories listed in the 140249e11e3aSSheldon Hearn.Ev CDPATH 140349e11e3aSSheldon Hearnvariable will be 140449e11e3aSSheldon Hearnsearched for the specified 140549e11e3aSSheldon Hearn.Ar directory . 1406029c8ee4STim J. RobbinsIf 1407029c8ee4STim J. Robbins.Ev CDPATH 1408029c8ee4STim J. Robbinsis unset, the current directory is searched. 140949e11e3aSSheldon HearnThe format of 141049e11e3aSSheldon Hearn.Ar CDPATH 141149e11e3aSSheldon Hearnis the same as that of 141249e11e3aSSheldon Hearn.Ev PATH . 1413e6d3cf26SSheldon HearnIn an interactive shell, 141449e11e3aSSheldon Hearnthe 141549e11e3aSSheldon Hearn.Ic cd 141649e11e3aSSheldon Hearncommand will print out the name of the directory 1417e6d3cf26SSheldon Hearnthat it actually switched to 1418e6d3cf26SSheldon Hearnif this is different from the name that the user gave. 141949e11e3aSSheldon HearnThese may be different either because the 142049e11e3aSSheldon Hearn.Ev CDPATH 142149e11e3aSSheldon Hearnmechanism was used or because a symbolic link was crossed. 1422178897f1STim J. Robbins.Pp 1423178897f1STim J. RobbinsIf the 1424178897f1STim J. Robbins.Fl P 1425178897f1STim J. Robbinsoption is specified, 142681e9cda2SRuslan Ermilov.Pa .. 1427178897f1STim J. Robbinsis handled physically and symbolic links are resolved before 142881e9cda2SRuslan Ermilov.Pa .. 1429178897f1STim J. Robbinscomponents are processed. 1430178897f1STim J. RobbinsIf the 1431178897f1STim J. Robbins.Fl L 1432178897f1STim J. Robbinsoption is specified, 143381e9cda2SRuslan Ermilov.Pa .. 1434178897f1STim J. Robbinsis handled logically. 1435178897f1STim J. RobbinsThis is the default. 14369434a1c7SDima Dorfman.It Ic chdir 14379434a1c7SDima DorfmanA synonym for the 14389434a1c7SDima Dorfman.Ic cd 14398eed22b1SJens Schweikhardtbuilt-in command. 14409ba31ca0SRuslan Ermilov.It Ic command Oo Fl p Oc Op Ar utility Op Ar argument ... 14412babaf74STim J. RobbinsExecute the specified 14422babaf74STim J. Robbins.Ar utility 14432babaf74STim J. Robbinsas a simple command (see the 14442babaf74STim J. Robbins.Sx Simple Commands 14452babaf74STim J. Robbinssection). 14462babaf74STim J. Robbins.Pp 14472babaf74STim J. RobbinsIf the 14482babaf74STim J. Robbins.Fl p 14492babaf74STim J. Robbinsoption is specified, the command search is performed using a 14502babaf74STim J. Robbinsdefault value of 14512babaf74STim J. Robbins.Ev PATH 14522babaf74STim J. Robbinsthat is guaranteed to find all of the standard utilities. 14539ba31ca0SRuslan Ermilov.It Ic echo Oo Fl e | n Oc Op Ar string 1454501e74b7SMark OvensPrint 1455501e74b7SMark Ovens.Ar string 1456501e74b7SMark Ovensto the standard output with a newline appended. 145781e9cda2SRuslan Ermilov.Bl -tag -width indent 1458501e74b7SMark Ovens.It Fl n 1459501e74b7SMark OvensSuppress the output of the trailing newline. 1460501e74b7SMark Ovens.It Fl e 1461501e74b7SMark OvensProcess C-style backslash escape sequences. 1462501e74b7SMark Ovens.Ic echo 1463501e74b7SMark Ovensunderstands the following character escapes: 146481e9cda2SRuslan Ermilov.Bl -tag -width indent 1465501e74b7SMark Ovens.It \ea 1466501e74b7SMark OvensAlert (ring the terminal bell) 1467501e74b7SMark Ovens.It \eb 1468501e74b7SMark OvensBackspace 1469501e74b7SMark Ovens.It \ec 1470501e74b7SMark OvensSuppress the trailing newline (this has the side-effect of truncating the 1471501e74b7SMark Ovensline if it is not the last character) 1472501e74b7SMark Ovens.It \ee 1473501e74b7SMark OvensThe ESC character (ASCII 0x1b) 1474501e74b7SMark Ovens.It \ef 1475501e74b7SMark OvensFormfeed 1476501e74b7SMark Ovens.It \en 1477501e74b7SMark OvensNewline 1478501e74b7SMark Ovens.It \er 1479501e74b7SMark OvensCarriage return 1480501e74b7SMark Ovens.It \et 1481501e74b7SMark OvensHorizontal tab 1482501e74b7SMark Ovens.It \ev 1483501e74b7SMark OvensVertical tab 1484501e74b7SMark Ovens.It \e\e 1485501e74b7SMark OvensLiteral backslash 1486501e74b7SMark Ovens.It \e0nnn 1487501e74b7SMark Ovens(Zero) The character whose octal value is nnn 1488501e74b7SMark Ovens.El 1489501e74b7SMark Ovens.Pp 1490501e74b7SMark OvensIf 1491501e74b7SMark Ovens.Ar string 1492501e74b7SMark Ovensis not enclosed in quotes then the backslash itself must be escaped 1493eccea571SRuslan Ermilovwith a backslash to protect it from the shell. 1494eccea571SRuslan ErmilovFor example 1495501e74b7SMark Ovens.Bd -literal -offset indent 1496501e74b7SMark Ovens$ echo -e "a\evb" 1497501e74b7SMark Ovensa 1498501e74b7SMark Ovens b 1499501e74b7SMark Ovens$ echo -e a\e\evb 1500501e74b7SMark Ovensa 1501501e74b7SMark Ovens b 1502501e74b7SMark Ovens$ echo -e "a\e\eb" 1503501e74b7SMark Ovensa\eb 1504501e74b7SMark Ovens$ echo -e a\e\e\e\eb 1505501e74b7SMark Ovensa\eb 1506501e74b7SMark Ovens.Ed 1507501e74b7SMark Ovens.El 1508558175caSTim J. Robbins.Pp 1509558175caSTim J. RobbinsOnly one of the 1510558175caSTim J. Robbins.Fl e 1511558175caSTim J. Robbinsand 1512558175caSTim J. Robbins.Fl n 1513558175caSTim J. Robbinsoptions may be specified. 151449e11e3aSSheldon Hearn.It Ic eval Ar string ... 1515e6d3cf26SSheldon HearnConcatenate all the arguments with spaces. 1516e6d3cf26SSheldon HearnThen re-parse and execute the command. 151749e11e3aSSheldon Hearn.It Ic exec Op Ar command Op arg ... 151849e11e3aSSheldon HearnUnless 151949e11e3aSSheldon Hearn.Ar command 152049e11e3aSSheldon Hearnis omitted, 152149e11e3aSSheldon Hearnthe shell process is replaced with the specified program 15228eed22b1SJens Schweikhardt(which must be a real program, not a shell built-in command or function). 152349e11e3aSSheldon HearnAny redirections on the 152449e11e3aSSheldon Hearn.Ic exec 152549e11e3aSSheldon Hearncommand are marked as permanent, 152649e11e3aSSheldon Hearnso that they are not undone when the 152749e11e3aSSheldon Hearn.Ic exec 152849e11e3aSSheldon Hearncommand finishes. 152949e11e3aSSheldon Hearn.It Ic exit Op Ar exitstatus 153049e11e3aSSheldon HearnTerminate the shell process. 153149e11e3aSSheldon HearnIf 153249e11e3aSSheldon Hearn.Ar exitstatus 153349e11e3aSSheldon Hearnis given 153449e11e3aSSheldon Hearnit is used as the exit status of the shell; 153549e11e3aSSheldon Hearnotherwise the exit status of the preceding command is used. 15369ba31ca0SRuslan Ermilov.It Ic export Oo Fl p Oc Op Ar name ... 15374b88c807SRodney W. GrimesThe specified names are exported so that they will 15384b88c807SRodney W. Grimesappear in the environment of subsequent commands. 153949e11e3aSSheldon HearnThe only way to un-export a variable is to 154049e11e3aSSheldon Hearn.Ic unset 154149e11e3aSSheldon Hearnit. 154249e11e3aSSheldon HearnThe shell allows the value of a variable to be set 154349e11e3aSSheldon Hearnat the same time as it is exported by writing 1544ab72124fSSteve Price.Bd -literal -offset indent 15454b88c807SRodney W. Grimesexport name=value 1546ab72124fSSteve Price.Ed 1547ab72124fSSteve Price.Pp 15484b88c807SRodney W. GrimesWith no arguments the export command lists the names 15494b88c807SRodney W. Grimesof all exported variables. 155045086f8cSTim J. RobbinsIf the 155145086f8cSTim J. Robbins.Fl p 155245086f8cSTim J. Robbinsoption is specified, the exported variables are printed as 155345086f8cSTim J. Robbins.Dq Ic export Ar name Ns = Ns Ar value 155445086f8cSTim J. Robbinslines, suitable for re-input to the shell. 155581e9cda2SRuslan Ermilov.It Ic fc Oo Fl e Ar editor Oc Op Ar first Op Ar last 155681e9cda2SRuslan Ermilov.It Ic fc Fl l Oo Fl nr Oc Op Ar first Op Ar last 155781e9cda2SRuslan Ermilov.It Ic fc Fl s Oo Ar old Ns = Ns Ar new Oc Op Ar first 155849e11e3aSSheldon HearnThe 155949e11e3aSSheldon Hearn.Ic fc 15608eed22b1SJens Schweikhardtbuilt-in command lists, or edits and re-executes, 156149e11e3aSSheldon Hearncommands previously entered to an interactive shell. 156281e9cda2SRuslan Ermilov.Bl -tag -width indent 156349e11e3aSSheldon Hearn.It Fl e Ar editor 156449e11e3aSSheldon HearnUse the editor named by 156549e11e3aSSheldon Hearn.Ar editor 156649e11e3aSSheldon Hearnto edit the commands. 156749e11e3aSSheldon HearnThe editor string is a command name, 156849e11e3aSSheldon Hearnsubject to search via the 156949e11e3aSSheldon Hearn.Ev PATH 157049e11e3aSSheldon Hearnvariable. 157149e11e3aSSheldon HearnThe value in the 157249e11e3aSSheldon Hearn.Ev FCEDIT 157349e11e3aSSheldon Hearnvariable is used as a default when 157449e11e3aSSheldon Hearn.Fl e 157549e11e3aSSheldon Hearnis not specified. 157649e11e3aSSheldon HearnIf 157749e11e3aSSheldon Hearn.Ev FCEDIT 157849e11e3aSSheldon Hearnis null or unset, the value of the 157949e11e3aSSheldon Hearn.Ev EDITOR 158049e11e3aSSheldon Hearnvariable is used. 158149e11e3aSSheldon HearnIf 158249e11e3aSSheldon Hearn.Ev EDITOR 158349e11e3aSSheldon Hearnis null or unset, 1584ab72124fSSteve Price.Xr ed 1 1585ab72124fSSteve Priceis used as the editor. 158649e11e3aSSheldon Hearn.It Fl l No (ell) 15874b88c807SRodney W. GrimesList the commands rather than invoking 1588eccea571SRuslan Ermilovan editor on them. 1589eccea571SRuslan ErmilovThe commands are written in the 15904b88c807SRodney W. Grimessequence indicated by the first and last operands, as 159149e11e3aSSheldon Hearnaffected by 159249e11e3aSSheldon Hearn.Fl r , 159349e11e3aSSheldon Hearnwith each command preceded by the command number. 159449e11e3aSSheldon Hearn.It Fl n 159549e11e3aSSheldon HearnSuppress command numbers when listing with 159649e11e3aSSheldon Hearn.Fl l . 159749e11e3aSSheldon Hearn.It Fl r 159849e11e3aSSheldon HearnReverse the order of the commands listed 159949e11e3aSSheldon Hearn(with 160049e11e3aSSheldon Hearn.Fl l ) 160149e11e3aSSheldon Hearnor edited 160249e11e3aSSheldon Hearn(with neither 160349e11e3aSSheldon Hearn.Fl l 160449e11e3aSSheldon Hearnnor 160549e11e3aSSheldon Hearn.Fl s ) . 160649e11e3aSSheldon Hearn.It Fl s 16074b88c807SRodney W. GrimesRe-execute the command without invoking an editor. 160849e11e3aSSheldon Hearn.It Ar first 160949e11e3aSSheldon Hearn.It Ar last 161049e11e3aSSheldon HearnSelect the commands to list or edit. 161149e11e3aSSheldon HearnThe number of previous commands that can be accessed 161249e11e3aSSheldon Hearnare determined by the value of the 1613d0353b83SRuslan Ermilov.Ev HISTSIZE 1614d0353b83SRuslan Ermilovvariable. 161549e11e3aSSheldon HearnThe value of 161649e11e3aSSheldon Hearn.Ar first 161749e11e3aSSheldon Hearnor 161849e11e3aSSheldon Hearn.Ar last 161949e11e3aSSheldon Hearnor both are one of the following: 162081e9cda2SRuslan Ermilov.Bl -tag -width indent 162149e11e3aSSheldon Hearn.It Ar [+]num 162249e11e3aSSheldon HearnA positive number representing a command number; 162349e11e3aSSheldon Hearncommand numbers can be displayed with the 162449e11e3aSSheldon Hearn.Fl l 162549e11e3aSSheldon Hearnoption. 162649e11e3aSSheldon Hearn.It Ar -num 162749e11e3aSSheldon HearnA negative decimal number representing the 162849e11e3aSSheldon Hearncommand that was executed 162949e11e3aSSheldon Hearn.Ar num 163049e11e3aSSheldon Hearnof 163149e11e3aSSheldon Hearncommands previously. 163249e11e3aSSheldon HearnFor example, -1 is the immediately previous command. 163349e11e3aSSheldon Hearn.It Ar string 163449e11e3aSSheldon HearnA string indicating the most recently entered command 163549e11e3aSSheldon Hearnthat begins with that string. 163649e11e3aSSheldon HearnIf the 163749e11e3aSSheldon Hearn.Ar old=new 163849e11e3aSSheldon Hearnoperand is not also specified with 163949e11e3aSSheldon Hearn.Fl s , 164049e11e3aSSheldon Hearnthe string form of the first operand cannot contain an embedded equal sign. 164149e11e3aSSheldon Hearn.El 164249e11e3aSSheldon Hearn.El 164349e11e3aSSheldon Hearn.Pp 164449e11e3aSSheldon HearnThe following environment variables affect the execution of 164549e11e3aSSheldon Hearn.Ic fc : 164681e9cda2SRuslan Ermilov.Bl -tag -width indent 164749e11e3aSSheldon Hearn.It Ev FCEDIT 16484b88c807SRodney W. GrimesName of the editor to use. 164949e11e3aSSheldon Hearn.It Ev HISTSIZE 16503d7b5b93SPhilippe CharnierThe number of previous commands that are accessible. 1651ab72124fSSteve Price.El 165249e11e3aSSheldon Hearn.It Ic fg Op Ar job 165349e11e3aSSheldon HearnMove the specified 165449e11e3aSSheldon Hearn.Ar job 165549e11e3aSSheldon Hearnor the current job to the foreground. 165649e11e3aSSheldon Hearn.It Ic getopts Ar optstring Ar var 165749e11e3aSSheldon HearnThe POSIX 165849e11e3aSSheldon Hearn.Ic getopts 165949e11e3aSSheldon Hearncommand. 166049e11e3aSSheldon HearnThe 166149e11e3aSSheldon Hearn.Ic getopts 166249e11e3aSSheldon Hearncommand deprecates the older 166349e11e3aSSheldon Hearn.Xr getopt 1 166449e11e3aSSheldon Hearncommand. 1665ab0a2172SSteve PriceThe first argument should be a series of letters, each possibly 1666ab0a2172SSteve Pricefollowed by a colon which indicates that the option takes an argument. 1667eccea571SRuslan ErmilovThe specified variable is set to the parsed option. 1668eccea571SRuslan ErmilovThe index of 166949e11e3aSSheldon Hearnthe next argument is placed into the shell variable 167049e11e3aSSheldon Hearn.Ev OPTIND . 1671ab0a2172SSteve PriceIf an option takes an argument, it is placed into the shell variable 167249e11e3aSSheldon Hearn.Ev OPTARG . 167349e11e3aSSheldon HearnIf an invalid option is encountered, 167449e11e3aSSheldon Hearn.Ev var 167549e11e3aSSheldon Hearnis set to 16761586940eSRuslan Ermilov.Dq Li \&? . 1677ab0a2172SSteve PriceIt returns a false value (1) when it encounters the end of the options. 167881e9cda2SRuslan Ermilov.It Ic hash Oo Fl rv Oc Op Ar command ... 167949e11e3aSSheldon HearnThe shell maintains a hash table which remembers the locations of commands. 168049e11e3aSSheldon HearnWith no arguments whatsoever, the 168149e11e3aSSheldon Hearn.Ic hash 168249e11e3aSSheldon Hearncommand prints out the contents of this table. 168349e11e3aSSheldon HearnEntries which have not been looked at since the last 168449e11e3aSSheldon Hearn.Ic cd 168549e11e3aSSheldon Hearncommand are marked with an asterisk; 168649e11e3aSSheldon Hearnit is possible for these entries to be invalid. 1687ab72124fSSteve Price.Pp 168849e11e3aSSheldon HearnWith arguments, the 168949e11e3aSSheldon Hearn.Ic hash 169049e11e3aSSheldon Hearncommand removes each specified 169149e11e3aSSheldon Hearn.Ar command 169249e11e3aSSheldon Hearnfrom the hash table (unless they are functions) and then locates it. 169349e11e3aSSheldon HearnWith the 169449e11e3aSSheldon Hearn.Fl v 169549e11e3aSSheldon Hearnoption, 169649e11e3aSSheldon Hearn.Ic hash 169749e11e3aSSheldon Hearnprints the locations of the commands as it finds them. 169849e11e3aSSheldon HearnThe 169949e11e3aSSheldon Hearn.Fl r 170049e11e3aSSheldon Hearnoption causes the 170149e11e3aSSheldon Hearn.Ic hash 170249e11e3aSSheldon Hearncommand to delete all the entries in the hash table except for functions. 170349e11e3aSSheldon Hearn.It Ic jobid Op Ar job 170449e11e3aSSheldon HearnPrint the process id's of the processes in the specified 170549e11e3aSSheldon Hearn.Ar job . 170649e11e3aSSheldon HearnIf the 170749e11e3aSSheldon Hearn.Ar job 170849e11e3aSSheldon Hearnargument is omitted, use the current job. 17099ba31ca0SRuslan Ermilov.It Ic jobs Oo Fl ls Oc Op Ar job ... 1710ad8a0759STim J. RobbinsPrint information about the specified jobs, or all jobs if no 1711ad8a0759STim J. Robbins.Ar job 1712ad8a0759STim J. Robbinsargument is given. 1713ad8a0759STim J. RobbinsThe information printed includes job ID, status and command name. 1714ad8a0759STim J. Robbins.Pp 1715ad8a0759STim J. RobbinsIf the 1716ad8a0759STim J. Robbins.Fl l 1717ad8a0759STim J. Robbinsoption is specified, the PID of each job is also printed. 1718ad8a0759STim J. RobbinsIf the 1719ad8a0759STim J. Robbins.Fl s 17209ba31ca0SRuslan Ermilovoption is specified, only the PIDs of the jobs are printed, one per line. 1721d74e011fSRuslan Ermilov.It Ic pwd Op Fl L | P 1722eccea571SRuslan ErmilovPrint the path of the current directory. 1723eccea571SRuslan ErmilovThe built-in command may 17244b88c807SRodney W. Grimesdiffer from the program of the same name because the 17258eed22b1SJens Schweikhardtbuilt-in command remembers what the current directory 1726eccea571SRuslan Ermilovis rather than recomputing it each time. 1727eccea571SRuslan ErmilovThis makes 1728eccea571SRuslan Ermilovit faster. 1729eccea571SRuslan ErmilovHowever, if the current directory is 173049e11e3aSSheldon Hearnrenamed, 17318eed22b1SJens Schweikhardtthe built-in version of 173249e11e3aSSheldon Hearn.Xr pwd 1 173349e11e3aSSheldon Hearnwill continue to print the old name for the directory. 1734178897f1STim J. Robbins.Pp 1735178897f1STim J. RobbinsIf the 1736178897f1STim J. Robbins.Fl P 1737178897f1STim J. Robbinsoption is specified, symbolic links are resolved. 1738178897f1STim J. RobbinsIf the 1739178897f1STim J. Robbins.Fl L 1740178897f1STim J. Robbinsoption is specified, the shell's notion of the current directory 1741178897f1STim J. Robbinsis printed (symbolic links are not resolved). 1742178897f1STim J. RobbinsThis is the default. 174381e9cda2SRuslan Ermilov.It Ic read Oo Fl p Ar prompt Oc Oo Fl t Ar timeout Oc Oo Fl er Oc Ar variable ... 174449e11e3aSSheldon HearnThe 174549e11e3aSSheldon Hearn.Ar prompt 174649e11e3aSSheldon Hearnis printed if the 174749e11e3aSSheldon Hearn.Fl p 174849e11e3aSSheldon Hearnoption is specified 1749eccea571SRuslan Ermilovand the standard input is a terminal. 1750eccea571SRuslan ErmilovThen a line is 1751eccea571SRuslan Ermilovread from the standard input. 1752eccea571SRuslan ErmilovThe trailing newline 17534b88c807SRodney W. Grimesis deleted from the line and the line is split as 175449e11e3aSSheldon Hearndescribed in the section on 175549e11e3aSSheldon Hearn.Sx White Space Splitting (Field Splitting) 175649e11e3aSSheldon Hearnabove, and 17574b88c807SRodney W. Grimesthe pieces are assigned to the variables in order. 1758f434d1dfSAdam DavidIf there are more pieces than variables, the remaining 175949e11e3aSSheldon Hearnpieces (along with the characters in 176049e11e3aSSheldon Hearn.Ev IFS 176149e11e3aSSheldon Hearnthat separated them) 176249e11e3aSSheldon Hearnare assigned to the last variable. 1763f434d1dfSAdam DavidIf there are more variables than pieces, the remaining 1764f434d1dfSAdam Davidvariables are assigned the null string. 1765ab72124fSSteve Price.Pp 176649e11e3aSSheldon HearnBackslashes are treated specially, unless the 176749e11e3aSSheldon Hearn.Fl r 176849e11e3aSSheldon Hearnoption is 1769eccea571SRuslan Ermilovspecified. 1770eccea571SRuslan ErmilovIf a backslash is followed by 17718f0561ccSThomas Gellekuma newline, the backslash and the newline will be 1772eccea571SRuslan Ermilovdeleted. 1773eccea571SRuslan ErmilovIf a backslash is followed by any other 17748f0561ccSThomas Gellekumcharacter, the backslash will be deleted and the following 177549e11e3aSSheldon Hearncharacter will be treated as though it were not in 177649e11e3aSSheldon Hearn.Ev IFS , 177749e11e3aSSheldon Hearneven if it is. 17788f0561ccSThomas Gellekum.Pp 177949e11e3aSSheldon HearnIf the 178049e11e3aSSheldon Hearn.Fl t 178149e11e3aSSheldon Hearnoption is specified and the 178249e11e3aSSheldon Hearn.Ar timeout 178349e11e3aSSheldon Hearnelapses before any input is supplied, 178449e11e3aSSheldon Hearnthe 178549e11e3aSSheldon Hearn.Ic read 178649e11e3aSSheldon Hearncommand will return without assigning any values. 178749e11e3aSSheldon HearnThe 178849e11e3aSSheldon Hearn.Ar timeout 178949e11e3aSSheldon Hearnvalue may optionally be followed by one of 179049e11e3aSSheldon Hearn.Dq s , 179149e11e3aSSheldon Hearn.Dq m 179249e11e3aSSheldon Hearnor 179349e11e3aSSheldon Hearn.Dq h 1794a910f192SDima Dorfmanto explicitly specify seconds, minutes or hours. 179549e11e3aSSheldon HearnIf none is supplied, 179649e11e3aSSheldon Hearn.Dq s 179749e11e3aSSheldon Hearnis assumed. 1798afa53c8dSMike Smith.Pp 179949e11e3aSSheldon HearnThe 180049e11e3aSSheldon Hearn.Fl e 180149e11e3aSSheldon Hearnoption exists only for backward compatibility with older scripts. 18029ba31ca0SRuslan Ermilov.It Ic readonly Oo Fl p Oc Op Ar name ... 180349e11e3aSSheldon HearnEach specified 180449e11e3aSSheldon Hearn.Ar name 180549e11e3aSSheldon Hearnis marked as read only, 180649e11e3aSSheldon Hearnso that it cannot be subsequently modified or unset. 180749e11e3aSSheldon HearnThe shell allows the value of a variable to be set 180849e11e3aSSheldon Hearnat the same time as it is marked read only 180949e11e3aSSheldon Hearnby using the following form: 1810ab72124fSSteve Price.Bd -literal -offset indent 18114b88c807SRodney W. Grimesreadonly name=value 1812ab72124fSSteve Price.Ed 1813ab72124fSSteve Price.Pp 181449e11e3aSSheldon HearnWith no arguments the 181549e11e3aSSheldon Hearn.Ic readonly 181649e11e3aSSheldon Hearncommand lists the names of all read only variables. 181745086f8cSTim J. RobbinsIf the 181845086f8cSTim J. Robbins.Fl p 181945086f8cSTim J. Robbinsoption is specified, the read-only variables are printed as 182045086f8cSTim J. Robbins.Dq Ic readonly Ar name Ns = Ns Ar value 182145086f8cSTim J. Robbinslines, suitable for re-input to the shell. 182281e9cda2SRuslan Ermilov.It Ic set Oo Fl /+abCEefIimnpTuVvx Oc Oo Fl /+o Ar longname Oc Oo 182381e9cda2SRuslan Ermilov.Fl c Ar string Oc Op Fl - Ar arg ... 1824e918fc8fSSheldon HearnThe 1825e918fc8fSSheldon Hearn.Ic set 1826e918fc8fSSheldon Hearncommand performs three different functions: 1827ab72124fSSteve Price.Bl -item 1828ab72124fSSteve Price.It 182949e11e3aSSheldon HearnWith no arguments, it lists the values of all shell variables. 1830ab72124fSSteve Price.It 183149e11e3aSSheldon HearnIf options are given, 183249e11e3aSSheldon Hearneither in short form or using the long 183349e11e3aSSheldon Hearn.Dq Fl /+o Ar longname 183449e11e3aSSheldon Hearnform, 183549e11e3aSSheldon Hearnit sets or clears the specified options as described in the section called 18366b15476eSSheldon Hearn.Sx Argument List Processing . 1837ab72124fSSteve Price.It 183849e11e3aSSheldon HearnIf the 183949e11e3aSSheldon Hearn.Dq Fl - 184049e11e3aSSheldon Hearnoption is specified, 184149e11e3aSSheldon Hearn.Ic set 184249e11e3aSSheldon Hearnwill replace the shell's positional parameters with the subsequent 184349e11e3aSSheldon Hearnarguments. 184449e11e3aSSheldon HearnIf no arguments follow the 184549e11e3aSSheldon Hearn.Dq Fl - 184649e11e3aSSheldon Hearnoption, 184749e11e3aSSheldon Hearnall the positional parameters will be cleared, 184849e11e3aSSheldon Hearnwhich is equivalent to executing the command 184949e11e3aSSheldon Hearn.Dq Li shift $# . 185049e11e3aSSheldon HearnThe 185149e11e3aSSheldon Hearn.Dq Fl - 18528eed22b1SJens Schweikhardtflag may be omitted when specifying arguments to be used 185349e11e3aSSheldon Hearnas positional replacement parameters. 185449e11e3aSSheldon HearnThis is not recommended, 185549e11e3aSSheldon Hearnbecause the first argument may begin with a dash 1856a762afe5SGiorgos Keramidas.Pq Ql - 185749e11e3aSSheldon Hearnor a plus 1858a762afe5SGiorgos Keramidas.Pq Ql + , 185949e11e3aSSheldon Hearnwhich the 186049e11e3aSSheldon Hearn.Ic set 186149e11e3aSSheldon Hearncommand will interpret as a request to enable or disable options. 1862ab72124fSSteve Price.El 186349e11e3aSSheldon Hearn.It Ic setvar Ar variable Ar value 186449e11e3aSSheldon HearnAssigns the specified 186549e11e3aSSheldon Hearn.Ar value 186649e11e3aSSheldon Hearnto the specified 186749e11e3aSSheldon Hearn.Ar variable . 186849e11e3aSSheldon Hearn.Ic Setvar 186949e11e3aSSheldon Hearnis intended to be used in functions that 1870e6d3cf26SSheldon Hearnassign values to variables whose names are passed as parameters. 187149e11e3aSSheldon HearnIn general it is better to write 187249e11e3aSSheldon Hearn.Bd -literal -offset indent 187349e11e3aSSheldon Hearnvariable=value 187449e11e3aSSheldon Hearn.Ed 187549e11e3aSSheldon Hearnrather than using 187649e11e3aSSheldon Hearn.Ic setvar . 187749e11e3aSSheldon Hearn.It Ic shift Op Ar n 187849e11e3aSSheldon HearnShift the positional parameters 187949e11e3aSSheldon Hearn.Ar n 1880e918fc8fSSheldon Hearntimes, or once if 188149e11e3aSSheldon Hearn.Ar n 188249e11e3aSSheldon Hearnis not specified. 188349e11e3aSSheldon HearnA shift sets the value of $1 to the value of $2, 188449e11e3aSSheldon Hearnthe value of $2 to the value of $3, and so on, 188549e11e3aSSheldon Hearndecreasing the value of $# by one. 188649e11e3aSSheldon HearnIf there are zero positional parameters, shifting does not do anything. 188781e9cda2SRuslan Ermilov.It Ic trap Oo Ar action Oc Ar signal ... 188849e11e3aSSheldon HearnCause the shell to parse and execute 188949e11e3aSSheldon Hearn.Ar action 189049e11e3aSSheldon Hearnwhen any specified 189149e11e3aSSheldon Hearn.Ar signal 189249e11e3aSSheldon Hearnis received. 1893162ae3aeSTony FinchThe signals are specified by name or number. 1894162ae3aeSTony FinchIn addition, the pseudo-signal 1895f5d1157fSRuslan Ermilov.Cm EXIT 1896162ae3aeSTony Finchmay be used to specify an action that is performed when the shell terminates. 189749e11e3aSSheldon HearnThe 189849e11e3aSSheldon Hearn.Ar action 189949e11e3aSSheldon Hearnmay be null or omitted; 190049e11e3aSSheldon Hearnthe former causes the specified signal to be ignored 190149e11e3aSSheldon Hearnand the latter causes the default action to be taken. 190249e11e3aSSheldon HearnWhen the shell forks off a subshell, 190349e11e3aSSheldon Hearnit resets trapped (but not ignored) signals to the default action. 190449e11e3aSSheldon HearnThe 190549e11e3aSSheldon Hearn.Ic trap 190649e11e3aSSheldon Hearncommand has no effect on signals that were ignored on entry to the shell. 190749e11e3aSSheldon Hearn.It Ic type Op Ar name ... 190849e11e3aSSheldon HearnInterpret each 190949e11e3aSSheldon Hearn.Ar name 191049e11e3aSSheldon Hearnas a command and print the resolution of the command search. 1911e6d3cf26SSheldon HearnPossible resolutions are: 19128eed22b1SJens Schweikhardtshell keyword, alias, shell built-in command, command, tracked alias 191349e11e3aSSheldon Hearnand not found. 191449e11e3aSSheldon HearnFor aliases the alias expansion is printed; 191549e11e3aSSheldon Hearnfor commands and tracked aliases 191649e11e3aSSheldon Hearnthe complete pathname of the command is printed. 191762df9b62SSheldon Hearn.It Ic ulimit Oo Fl HSabcdflmnstuv Oc Op Ar limit 1918ab72124fSSteve PriceSet or display resource limits (see 1919ab72124fSSteve Price.Xr getrlimit 2 ) . 19206b15476eSSheldon HearnIf 192149e11e3aSSheldon Hearn.Ar limit 19226b15476eSSheldon Hearnis specified, the named resource will be set; 19237a2afe64SJoerg Wunschotherwise the current resource value will be displayed. 1924ab72124fSSteve Price.Pp 19256b15476eSSheldon HearnIf 192649e11e3aSSheldon Hearn.Fl H 192749e11e3aSSheldon Hearnis specified, the hard limits will be set or displayed. 192849e11e3aSSheldon HearnWhile everybody is allowed to reduce a hard limit, 192949e11e3aSSheldon Hearnonly the superuser can increase it. 193049e11e3aSSheldon HearnThe 193149e11e3aSSheldon Hearn.Fl S 193249e11e3aSSheldon Hearnoption 1933eccea571SRuslan Ermilovspecifies the soft limits instead. 1934eccea571SRuslan ErmilovWhen displaying limits, 19356b15476eSSheldon Hearnonly one of 193649e11e3aSSheldon Hearn.Fl S 19376b15476eSSheldon Hearnor 193849e11e3aSSheldon Hearn.Fl H 193949e11e3aSSheldon Hearncan be given. 194049e11e3aSSheldon HearnThe default is to display the soft limits, 194149e11e3aSSheldon Hearnand to set both the hard and the soft limits. 1942ab72124fSSteve Price.Pp 19436b15476eSSheldon HearnOption 194449e11e3aSSheldon Hearn.Fl a 194549e11e3aSSheldon Hearncauses the 194649e11e3aSSheldon Hearn.Ic ulimit 194749e11e3aSSheldon Hearncommand to display all resources. 194849e11e3aSSheldon HearnThe parameter 194949e11e3aSSheldon Hearn.Ar limit 19506b15476eSSheldon Hearnis not acceptable in this mode. 1951ab72124fSSteve Price.Pp 19527a2afe64SJoerg WunschThe remaining options specify which resource value is to be 195349e11e3aSSheldon Hearndisplayed or modified. 195449e11e3aSSheldon HearnThey are mutually exclusive. 195581e9cda2SRuslan Ermilov.Bl -tag -width indent 19563652a236SMartin Cracauer.It Fl b Ar sbsize 19573652a236SMartin CracauerThe maximum size of socket buffer usage, in bytes. 195849e11e3aSSheldon Hearn.It Fl c Ar coredumpsize 19597a2afe64SJoerg WunschThe maximal size of core dump files, in 512-byte blocks. 196049e11e3aSSheldon Hearn.It Fl d Ar datasize 19617a2afe64SJoerg WunschThe maximal size of the data segment of a process, in kilobytes. 196249e11e3aSSheldon Hearn.It Fl f Ar filesize 196349e11e3aSSheldon HearnThe maximal size of a file, in 512-byte blocks. 196449e11e3aSSheldon Hearn.It Fl l Ar lockedmem 19657a2afe64SJoerg WunschThe maximal size of memory that can be locked by a process, in 19667a2afe64SJoerg Wunschkilobytes. 196749e11e3aSSheldon Hearn.It Fl m Ar memoryuse 19687a2afe64SJoerg WunschThe maximal resident set size of a process, in kilobytes. 196949e11e3aSSheldon Hearn.It Fl n Ar nofiles 19707a2afe64SJoerg WunschThe maximal number of descriptors that could be opened by a process. 197149e11e3aSSheldon Hearn.It Fl s Ar stacksize 19727a2afe64SJoerg WunschThe maximal size of the stack segment, in kilobytes. 197349e11e3aSSheldon Hearn.It Fl t Ar time 19747a2afe64SJoerg WunschThe maximal amount of CPU time to be used by each process, in seconds. 197549e11e3aSSheldon Hearn.It Fl u Ar userproc 1976ab72124fSSteve PriceThe maximal number of simultaneous processes for this user ID. 197762df9b62SSheldon Hearn.It Fl v Ar virtualmem 19782d41ef4bSMatthew DillonThe maximal virtual size of a process, in kilobytes. 1979ab72124fSSteve Price.El 198049e11e3aSSheldon Hearn.It Ic umask Op Ar mask 198149e11e3aSSheldon HearnSet the file creation mask (see 1982ab72124fSSteve Price.Xr umask 2 ) 198349e11e3aSSheldon Hearnto the octal value specified by 19845d3b843bSSheldon Hearn.Ar mask . 198549e11e3aSSheldon HearnIf the argument is omitted, the current mask value is printed. 198681e9cda2SRuslan Ermilov.It Ic unalias Oo Fl a Oc Op Ar name 19876b15476eSSheldon HearnIf 198849e11e3aSSheldon Hearn.Ar name 19896b15476eSSheldon Hearnis specified, the shell removes that alias. 19906b15476eSSheldon HearnIf 19911b9735e6SSheldon Hearn.Fl a 19926b15476eSSheldon Hearnis specified, all aliases are removed. 19939ba31ca0SRuslan Ermilov.It Ic unset Oo Fl fv Oc Ar name ... 19948b34ad92STim J. RobbinsThe specified variables or functions are unset and unexported. 19958b34ad92STim J. RobbinsIf the 19968b34ad92STim J. Robbins.Fl v 19978b34ad92STim J. Robbinsoption is specified or no options are given, the 199849e11e3aSSheldon Hearn.Ar name 19998b34ad92STim J. Robbinsarguments are treated as variable names. 20008b34ad92STim J. RobbinsIf the 20018b34ad92STim J. Robbins.Fl f 20028b34ad92STim J. Robbinsoption is specified, the 20038b34ad92STim J. Robbins.Ar name 20048b34ad92STim J. Robbinsarguments are treated as function names. 200549e11e3aSSheldon Hearn.It Ic wait Op Ar job 200649e11e3aSSheldon HearnWait for the specified 200749e11e3aSSheldon Hearn.Ar job 200849e11e3aSSheldon Hearnto complete and return the exit status of the last process in the 200949e11e3aSSheldon Hearn.Ar job . 2010e6d3cf26SSheldon HearnIf the argument is omitted, wait for all jobs to complete 2011e6d3cf26SSheldon Hearnand return an exit status of zero. 2012ab72124fSSteve Price.El 2013ab72124fSSteve Price.Ss Commandline Editing 2014ab72124fSSteve PriceWhen 2015ab72124fSSteve Price.Nm 2016ab72124fSSteve Priceis being used interactively from a terminal, the current command 201749e11e3aSSheldon Hearnand the command history 201849e11e3aSSheldon Hearn(see 201949e11e3aSSheldon Hearn.Ic fc 202049e11e3aSSheldon Hearnin 20218eed22b1SJens Schweikhardt.Sx Built-in Commands ) 202249e11e3aSSheldon Hearncan be edited using vi-mode command line editing. 202349e11e3aSSheldon HearnThis mode uses commands similar 20244b88c807SRodney W. Grimesto a subset of those described in the vi man page. 202549e11e3aSSheldon HearnThe command 202649e11e3aSSheldon Hearn.Dq Li set -o vi 202749e11e3aSSheldon Hearn(or 2028e918fc8fSSheldon Hearn.Dq Li set -V ) 202949e11e3aSSheldon Hearnenables vi-mode editing and places 2030ab72124fSSteve Price.Nm 2031eccea571SRuslan Ermilovinto vi insert mode. 2032eccea571SRuslan ErmilovWith vi-mode enabled, 2033ab72124fSSteve Price.Nm 203449e11e3aSSheldon Hearncan be switched between insert mode and command mode by typing 203549e11e3aSSheldon Hearn.Aq ESC . 203649e11e3aSSheldon HearnHitting 203749e11e3aSSheldon Hearn.Aq return 203849e11e3aSSheldon Hearnwhile in command mode will pass the line to the shell. 2039ab72124fSSteve Price.Pp 204049e11e3aSSheldon HearnSimilarly, the 204149e11e3aSSheldon Hearn.Dq Li set -o emacs 204249e11e3aSSheldon Hearn(or 2043e918fc8fSSheldon Hearn.Dq Li set -E ) 204449e11e3aSSheldon Hearncommand can be used to enable a subset of 2045ab72124fSSteve Priceemacs-style command line editing features. 204691ee1c5dSGiorgos Keramidas.Sh EXIT STATUS 204791ee1c5dSGiorgos KeramidasErrors that are detected by the shell, such as a syntax error, will 204891ee1c5dSGiorgos Keramidascause the shell to exit with a non-zero exit status. 204991ee1c5dSGiorgos KeramidasIf the shell is not an interactive shell, the execution of the shell 205091ee1c5dSGiorgos Keramidasfile will be aborted. 205191ee1c5dSGiorgos KeramidasOtherwise the shell will return the exit status of the last command 205291ee1c5dSGiorgos Keramidasexecuted, or if the exit builtin is used with a numeric argument, it 205391ee1c5dSGiorgos Keramidaswill return the argument. 2054c83e7c50SJoseph Koshy.Sh SEE ALSO 2055c644db6aSSheldon Hearn.Xr builtin 1 , 2056c644db6aSSheldon Hearn.Xr echo 1 , 2057c83e7c50SJoseph Koshy.Xr expr 1 , 20585521ff5aSRuslan Ermilov.Xr pwd 1 , 2059c83e7c50SJoseph Koshy.Xr test 1 2060ab72124fSSteve Price.Sh HISTORY 2061b8923d4cSWolfram SchneiderA 2062ab72124fSSteve Price.Nm 2063b8923d4cSWolfram Schneidercommand appeared in 2064fc482908STim J. Robbins.At v1 . 2065128dc4a2STim J. Robbins.Sh BUGS 2066128dc4a2STim J. RobbinsThe 2067128dc4a2STim J. Robbins.Nm 2068128dc4a2STim J. Robbinsutility does not recognize multibyte characters. 2069