Built-in Shell Variables

Built-in variables are automatically set by the shell and are typically used inside shell scripts. Built-in variables can make use of the variable substitution patterns shown previously. Note that the $ is not actually part of the variable name, although the variable is always referenced this way.

Variable

Description

$#

Number of command-line arguments.

$-

Options currently in effect (arguments supplied on command line or to set).

$?

Exit value of last executed command.

$$

Process number of current process.

$!

Process number of last background command.

$0

First word; that is, command name. This will have the full pathname if it was found via a PATH search.

$ n

Individual arguments on command line (positional parameters). If n is greater than 9, it must be specified as ${ n}.

$*, $@

All arguments on command line ($1 $2 ...).

“$*”

All arguments on command line as one string (“$1 $2 ..."). The values are separated by the first character in the IFS special variable.

“$@”

All arguments on command line, individually quoted (“$1” “$2” ...).

$_

Temporary variable; initialized to pathname of script or program being executed. Later, stores the last argument of previous command. Also stores name of matching MAIL file during mail checks.

HISTCMD

The history number of the current command.

LINENO

Current line number within the script or function.

OLDPWD

Previous working directory (set by cd).

OPTARG

Name of last option processed by getopts.

OPTIND

Numerical index of OPTARG.

PPID

Process number of this ...

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.