Manipulate shell variables and functions.
Syntax set [--abBCefhHkmnpPtuvx] [-o option] [argument ...]
If no options or arguments are supplied, set displays the names and values of all shell variables and functions, sorted according to the current locale, in a format that can be reused as input. When options are supplied, they set or unset shell attributes.
Options Using + rather than - will cause the option to be turned off. -a Mark variables which are modified or created for export. -o allexport -b Cause the status of terminated background jobs to be reported immediately, rather than before printing the next primary prompt. -o notify -B The shell will perform brace expansion. This option is on by default. -o braceexpand -C Prevent output redirection using `>', `>&', and `<>' from overwriting existing files. -o noclobber -e Exit immediately if a simple command exits with a non-zero status, unless the command that fails is part of an until or while loop, part of an if statement, part of a && or || list, or if the command's return status is being inverted using !. -o errexit -f Disable file name generation (globbing). -o noglob -h Locate and remember (hash) commands as they are looked up for execution. This option is enabled by default. -o hashall -H Enable `!' style history substitution This option is on by default for interactive shells. -o histexpand -k All arguments in the form of assignment statements are placed in the environment for a command, not just those that precede the command name. -o keyword -m Job control is enabled. -o monitor -n Read commands but do not execute them; this can be used to check a script for syntax errors. This option is ignored by interactive shells. -o noexec -o option-name Set the option corresponding to `option-name' The `option-names' are listed above and below (in bold) emacs : Use an emacs-style line editing interface . history : Enable command history, this option is on by default in interactive shells. ignoreeof : An interactive shell will not exit upon reading EOF. posix : Change the behavior of Bash to match the POSIX 1003.2 standard. vi : Use a vi-style line editing interface. -p Turn on privileged mode. In this mode, the $BASH_ENV and $ENV files are not processed, shell functions are not inherited from the environment, and the SHELLOPTS variable, if it appears in the environment, is ignored. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the -p option is not supplied, these actions are taken and the effective user id is set to the real user id. If the -p option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective user and group ids to be set to the real user and group ids. -o privileged -P If set, do not follow symbolic links when performing commands. The physical directory is used instead. -o physical -t Exit after reading and executing one command. -o onecmd -u Treat unset variables as an error when performing parameter expansion. An error message will be written to the standard error, and a non-interactive shell will exit. -o nounset -v Print shell input lines as they are read. -o verbose -x Print a trace of simple commands and their arguments after they are expanded and before they are executed. -o xtrace -- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parameters are set to the arguments, even if some of them begin with a `-'. - Signal the end of options, cause all remaining arguments to be assigned to the positional parameters. The `-x' and `-v' options are turned off. If there are no arguments, the positional parameters remain unchanged.
Set the variable 'mydept' equal to 'Sales' :
mydept=Sales To make the change permanent: export mydept
By default, Bash follows the logical chain of directories when performing commands which change the current directory. e.g.
If `/usr/sys' is a symbolic link to `/usr/local/sys' then: $ cd /usr/sys; echo $PWD /usr/sys $ cd ..; pwd /usr If set -P is on (do not follow symbolic links), then: $ cd /usr/sys; echo $PWD /usr/local/sys $ cd ..; pwd /usr/local
Debugging part of a script:
set -x # activate debugging
# your commands go here...
set +x # stop debugging
The options can also be used upon invocation of the shell.
The current set of options can be found in
$-. The remaining N arguments
are positional parameters and are assigned, in order, to
$N. The special parameter
# is set to N.
set is a POSIX `special' builtin. The return status is always zero unless an invalid option is supplied.
"I can understand there are things like shadows they need to fix after a shoot, but it's unfair to represent an image of yourself if it's not true. They're gonna see what you look like on film anyway, so why try to cover all your wobbly bits in a photo?" ~ Emily Blunt
Related bash commands:
env - Display, set, or remove environment variables
groups - Print group names a user is in
hostname - Print or set system name
id - Print user and group id's
logname - Print current login name
printenv - Print environment variables
readonly - Mark variables/functions as readonly
shift - Shift positional parameters
shopt - Shell Options
uname - Print system information
users - Print login names of users currently logged in
unset - Remove variable or function names
who - Print who is currently logged in
Equivalent Windows commands: SET - Display, set, or remove Windows NT environment variables