環境変数/シェル変数
環境変数: シェル自身とそのシェルから起動される全てのプロセスで有効となる変数
シェル変数: そのシェル内でのみ有効となる変数
シェル変数は export コマンドにより環境変数となり、このシェルから起動したコマンドや他のシェルでも使えるようになる。
env コマンド/ printenv コマンドにより環境変数が表示され、set コマンドでシェル変数と環境変数が表示される。
$ printenv | head -10
LC_PAPER=ja_JP.UTF-8
LESS_TERMCAP_mb=
LC_ADDRESS=ja_JP.UTF-8
HOSTNAME=ip-10-1-11-92
LC_MONETARY=ja_JP.UTF-8
LESS_TERMCAP_md=
LESS_TERMCAP_me=
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
$ set | head -10
AWS_AUTO_SCALING_HOME=/opt/aws/apitools/as
AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
AWS_ELB_HOME=/opt/aws/apitools/elb
AWS_PATH=/opt/aws
BASH=/bin/bash
BASHOPTS=cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
$ printenv HOME
/home/ec2-user
シェルのオプション
シェルにはオプション機能があり、set コマンドにより切り替えられる。
allexport: 作成変更した変数を自動的にエクスポートする
emacs: emacs 風のキーバインドにする
ignoreeof: Ctrl + D でログアウトしないようにする
noclobber: 出力リダイレクトにより上書きを禁止する
noglob: メタキャラクタを用いたファイル名展開を無効にする
vi: vi 風のキーバインドにする
$ ls *.rpm
httpd-2.2.34-1.16.amzn1.src.rpm
$ set -o noglob
$ ls *.rpm
ls: cannot access *.rpm: No such file or directory
$ set +o noglob
$ ls *.rpm
httpd-2.2.34-1.16.amzn1.src.rpm
$ set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off