はじめに
シェル変数と環境変数について自分なりにまとめてみました。
シェル変数とは
シェル変数というのは、現在使用しているシェルの内部だけで有効な変数
です。なので他のシェルを使っているユーザーは別のシェル変数を使用することはできません。
シェル変数を設定することで、シェルのさまざまなカスタマイズを行う事ができます。
シェル変数の設定方法
$ var1='test variable'
上記の例は、var1という変数にtest variableを設定するという意味になります。
設定した変数は、echoコマンドで中身を参照する事ができます。
$ echo $var1
tesat variable
環境変数とは
シェル変数は、現在のシェル内部でしか使用できないのに対して、環境変数は別のシェルを起動したり、コマンドを実行した場合にも使用できる変数のことです。
シェルからはさまざまなコマンドを起動しますが、このうち実行ファイルとして存在するコマンドを外部コマンドと言います。
これに対してシェル自体に内臓しているコマンドを組み込みコマンドと言います。
外部コマンドか組み込みコマンドかの判別方法
$ type set
set はシェル組み込み関数です ⇦組み込みコマンド
$ type cat
cpはbin/catです ⇦外部コマンドの場合フルパス表示
ここで出てきた外部コマンドというのは、シェルの外側で実行されます。そのため現在設定されているシェル変数の値を外部コマンドは参照する事ができません。
しかし、外部コマンドでも常に設定を反映させておきたい変数も多くあります。このような用途のために、外部コマンドからも値を参照できるようにした変数を環境変数と言います。
シェル変数と環境変数の大きな違いは、使用できる範囲が違う
という事です。
例えば、LANGという環境変数があります。これは表示される言語を変更する変数です。
catコマンドを実行した時、まず初めに環境変数であるLANGの値を確認して、その内容によって表示する言語を決めています。
この他にも多くのコマンドは、環境変数の値を確認してから動作しています。
環境変数の設定
$ export シェル変数 ⇦シェル変数を環境変数へ
bashの設定ファイル
シェルの設定を行なっても、シェルを終了すると設定は全て消えてしまいます。
なので次回以降ログインした時も同じ設定にするには、bashの設定ファイルを記述しなければいけません。
bashは、起動時に/etc/profile .bash_profile .bashrcという順番で設定ファイルを読み込んでいきます。
これはログインシェルの場合で、非ログインシェルの場合は.bashrcを読み込みます。
このようなファイルを記述するには、vimエディタを使用します。
ログイン時に一度だけ設定すればよい項目は.bash_profileに書き、それ以外のbashを起動するたびに毎回設定する必要のある項目は.bashrcに書きます。基本的には、.bashrcに書いておけば問題ありません。