【初心者向け解説】シェル変数と環境変数

【初心者向け解説】シェル変数と環境変数

シェルとは

シェルはユーザーと Linux システムの対話をつかさどります。そのためには、ユーザーのホームディレクトリやログイン名など、ユーザーに関する情報を保持していなければなりません。 Linux ではこのような情報は変数に保存されます。変数は、その有効範囲(スコープ)によって、シェル変数と環境変数に分けられます。

シェル変数

シェル変数の有効範囲は、その変数を定義したシェル・プロセスのみになります。当該のシェルプロセスを終了するとシェル変数は失われます。 別のシェルを新しく起動した 場合は、新しいシェルから元のシェルで定義した内容を参照することはできません。

環境変数

環境変数は、 その変数を定義したシェル上、及びそのシェルで実行されるプログラムにも引き継がれる変数です。環境変数は、シェル変数をexportコマンドでエクスポートすることによって設定します。
下記によく利用される環境変数を記載します。

環境変数説明
EDITORデフォルトのエディタのパス
HISTFILEコマンド履歴を格納するファイル
HISTFILESIZEHISTFILEに保存する履歴数
HISTSIZEコマンド履歴の最大数
HOMEカレントユーザのホームディレクトリ
HOSTNAMEホスト名
LANGロケール
LOGNAMEログインシェルのユーザ名
PATHコマンドやプログラムを検索するディレクトリリスト
PS1プロンプトの表示文字列
PS2複数行にわたる入力時のプロンプト
PWDカレントディレクトリ
TERM端末の種類
USER現在のユーザー

変数を定義する書式は次のとおりです。

変数名=値

この時「=」 の前後にスペースが入らないように注意して下さい。変数名には英字、数字、アンダーバー(_)を使うことができますが、先頭の文字に数字を使うことはできません。大文字と小文字は区別されます。値にスペースなどが入っている場合は二重引用符「”」もしくは単一引用符「’」で囲みます。

定義された変数は   echoコマンドを使って参照できます。echoコマンドは指定した文字列や変数の値を出力します。変数を参照する場合は、変数名の先頭に「$」をつけますコマンドの書式は次のとおりです。

echo [文字列または$変数名]

例えばechoコマンドに文字列 Linux を指定すると次のように実行されます。

echoコマンドに変数 lpi を指定すると、変数の内容が表示されます。

変数を削除するためにはunsetコマンド使います。 このとき変数名の先頭には「$」記号を付けません。unsetコマンドの書式は次のとおりです。

unset 変数名

先ほどセットした変数 lpi を削除するには次のように実行します。

定義されている環境変数を一覧表示するにはenvコマンドやprintenvコマンドを使います。また、環境変数とシェル変数を両方表示したい場合は set コマンドを使います。

シェル変数は新たに起動したシェルから参照することはできませんが、 export コマンドでエクスポートすることによって参照できるようになります。 export コマンドの書式は次のとおりです。この場合も変数名の頭に「$」記号はつけません。

export 変数名[=値]

最後に

変数の定義方法と参照方法をまとめます。定義する際には、変数名の先頭に「$」記号は不要であり、参照する際には「$」記号が必要です。

$VAR=linux
VAR=linux
echo VAR
echo $VAR