シェル変数と環境変数


Linuxサーバー管理者の技術を2日で学べる「初心者向けリナックスセミナー」
30日掛かって覚えるプロの技術を、たった2日間で学習できます。
リナックスマスター2日間集中セミナー【CentOS7.1版】
 (今すぐ↑をクリックしてください。)

26.コマンドライン操作(シェル)で、シェルはユーザーとカーネルの間に立ち、
通訳のようにユーザーのコマンドをカーネルに伝える橋渡しをするプログラムだと紹介しました。

橋渡しをするには、ユーザーのホームディレクトリやログイン名など、
ユーザーに関する情報を保持していなければなりません。
Linuxではそのような情報を変数に保存しています。

変数は、その有効範囲(スコープ)によって、シェル変数環境変数に分けられます。
シェル変数の有効範囲は、その変数を定義したシェルのみになります。
シェルを終了すると、シェル変数は失われ、別のシェルを新たに起動した場合は、
新しいシェルから元のシェルで定義した内容を参照することはできません。

環境変数は、その変数を定義したシェル上、及びそのシェルで実行される
プログラムからも参照できる変数です。

環境変数は、シェル変数をexportコマンドでエクスポートすることによって設定します。

実際にどのような動きをするか実習してみましょう。
Linuxにログインして下記コマンドを入力してください。

----------------------------------------------------------------------
$ EV=world  ←変数EVにworldを設定します。
$ SV=local  ←変数SVにlocalを設定します。
$ export EV ←exportコマンドで変数EVを環境変数にエクスポートします。

$ bash    ←bashを実行して新しいシェルを起動します。
$ echo $EV  ←環境変数EVの内容を表示します。
world     ←環境変数は元シェルの変数を参照できます。
$ echo $SV  ←シェル変数SVの内容を参照します。
       ←シェル変数は元シェルの変数を参照できません。

$ EV='new world' ←環境変数EVを再定義します。
$ exit      ←このシェルを終了します。
exit

$ echo $EV    ←環境変数EVの内容を表示します。
world      ←子プロセスでの変更は反映されません。
----------------------------------------------------------------------

よく利用される環境変数として次のようなものがあります。
------------------------------------------------------------
PATH   コマンドやプログラムを検索するディレクトリリスト
PWD    カレントディレクトリ
HOSTNAME ホスト名
USER   現在のユーザー
LANG   ロケール(言語処理方式)
HOME   カレントユーザーのホームディレクトリ
LOGNAME  ログインシェルのユーザー名
PS1    プロンプトの表示文字列
PS2    複数行にわたる入力時のプロンプト
HISTSIZE コマンド履歴の最大値
HISTFILE コマンド履歴を格納するファイル
TERM   端末の種類
------------------------------------------------------------

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

変数名=値

変数を定義する際、「=」の前後にスペースを入れないよう注意してください。

変数名には、英字、数字、アンダーバーを使うことができますが、
先頭の文字に数字を使うことはできません。

また大文字、小文字は別文字として区別されます。

値にスペースなどが入る場合は、二重引用符「"」または、
単一引用符「'」で囲みます。

定義した変数は、echoコマンドで参照することができます。
echoコマンドは、指定した文字列や変数の値を出力します。
変数を指定する際は、変数名の先頭に「$」を付けます。

書式としては↓のとおりです。

echo $変数名(または文字列)

echoに文字列pakiraを指定すると↓のようになります。
----------------------
$ echo pakira
pakira
----------------------

echoコマンドに変数cpを指定すると、↓のようになります。
----------------------
$ cp='copy'
$ echo $cp
copy
----------------------

また、変数を削除するには、unsetコマンドを使用します。
この時変数名の先頭に「$」は付けませんので注意してください。

書式としては↓のとおりです。

unset 変数名

先ほどセットした変数cpを削除するには、↓のように実行します。
----------------------
$ unset cp
$ echo $cp

$
----------------------

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

シェル変数は新たに起動したシェルからは参照できませんが、
exportコマンドで環境変数にエクスポートすることによって
参照出来るようになります。

exportコマンドの書式としては↓のとおりです。

export 変数名(=値)

unsetの時と同じでexportを実行する場合も、変数名の先頭に
「$」記号は付けませんので注意してください。

ちなみに、エクスポートと変数定義を1行で書くこともできます。
その場合は↓のとおりになります。
----------------------
$ export cp='copy'
----------------------



■CentOS7.1サーバー構築マニュアルを無料プレゼント
 「CentOS7.1」のサーバー構築手順、「VMware Player」の
 ダウンロードとインストール手順をまとめたマニュアルを
 無料でプレゼントしています。


 詳しくは↓のページで説明していますので、今すぐクリックしてダウンロードしてください。
 無料マニュアルをダウンロードする  無料マニュアルをダウンロードする