シェル ( 1 )

June 02, 2018

環境変数/シェル変数

環境変数: シェル自身とそのシェルから起動される全てのプロセスで有効となる変数
シェル変数: そのシェル内でのみ有効となる変数

シェル変数は 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  

 © 2023, Dealing with Ambiguity