シェルの宗派と環境変数

あまり本格的なシェルスクリプトは書いたことないので、bash(bourneシェル系)とtcsh(Cシェル系)の宗教戦争とかよく分かりませんが、むかしSolarisからLinuxに移ったときに戸惑ったのが、環境変数の設定コマンドでした。ついでに言うとDOSだとまた違うのでややこしいです。特に展開するときパーセント記号で囲むとか。


sh/bashの場合

$ export HOGE=1234567890
$ echo $HOGE
1234567890
$ printenv HOGE
1234567890

csh/tcshの場合

> setenv HOGE 1234567890
> echo $HOGE
1234567890
> printenv HOGE
1234567890

DOSの場合

> set HOGE=1234567890
> echo %HOGE%
1234567890
> printenv HOGE
1234567890



またシェル変数に関してもbashtcshでは異なります。DOSにはそもそも環境変数とシェル変数という区別がありませんね。


sh/bashの場合

$ PIYO=ABCDEFG
$ echo $PIYO
ABCDEFG
$ export PIYO ←これによってシェル変数を環境変数として設定する

csh/tcshの場合

> set PIYO=ABCDEFG
> setenv PIYO HIJKLMN ←シェル変数と環境変数は別物
> echo $PIYO
ABCDEFG
> printenv PIYO
HIJKLMN