◆ シェル変数と環境変数
シェルがユーザとLinuxシステムとの対話を担うためにはユーザのログイン名やホームディレクトリ
などのユーザ情報をあらかじめ保持している必要があり、この種のユーザ情報は変数に保持されます。
変数にはシェル変数と環境変数の2種類があります。シェル変数と環境変数の違いは以下の通りです。
変数 |
説明 |
シェル変数 |
現在実行しているシェルの中だけで有効な変数。 |
環境変数 |
現在実行しているシェルと、そのシェルで実行されたプログラムにも引き継がれる変数。
環境変数は、シェル変数をexportコマンドで定義して設定する。
|
シェル変数と環境変数の違いを理解するために、先ず、変数の定義やそのコマンドについて解説します。
◆ 変数の定義とコマンド
変数を定義するためには以下の構文を使用します。この構文を定義する際の注意点は以下の通りです。
【構文】 変数名=値
1. 「 = 」の前後にスペースを入力してはいけない
2. 「変数名」の先頭文字に数字を使用してはいけない
3. 「値」にスペースを入力する場合、「 "」 または 「 ' 」 で囲む
4. 大文字と小文字は区別される
◆ 変数名を「CISCO」として、値を 「CCIE」とする設定例
◆ 変数名を「 LPI 」として、値を「 Linux Professional Institute 」とする設定例
$ LPI="Linux Professional Institute" |
◆ echoコマンド
echoコマンドは、指定した文字列や変数の値を出力できるコマンド。変数を出力する場合、変数名の先頭に
$ マークを付けてコマンドを入力します。
【構文】 echo 文字列
【構文】 echo $変数名
◆ 文字列として「CentOS」と出力
◆ 変数名の「 LPI 」を出力 ※ 事前に LPI="Linux Professional Institute" と定義していることが前提
$ echo $LPI
Linux Professional Institute
|
◆ unsetコマンド
定義した変数名は、unsetコマンドで削除できます。
【構文】 unset 変数名
◆ 変数名の「 LPI 」の削除
◆ setコマンド/envコマンド/printenvコマンド
シェル変数と環境変数を確認するためには、setコマンドを使用します。設定済みの環境変数を一覧表示
するためには、envコマンドやprintenvコマンドを使用します。
◆ setコマンドの実行 (シェル変数と環境変数の確認)
◆ envコマンドの実行 (環境変数の確認)
◆ printenvコマンドの実行 (環境変数の確認)
◆ printenvコマンドの実行 (特定の環境変数を指定した場合、その値だけが表示される)
$ printenv PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/admin/bin
|
◆ exportコマンド
exportコマンドにより、新たに起動したシェル(子供シェル)においても変数を参照できるコマンドです。
exportコマンドの後に変数名を指定する入力だけでなくexportコマンドと変数定義を1行でも入力できます。
【構文】 export 変数名
【構文】 export 変数名=値
◆ 変数名の「LPI」をエクスポート ※ 事前に例えば LPI="Linux Professional Institute" のように定義していることが前提
◆ 変数名の「LPI」と値をエクスポート ※ 事前に変数名の定義の必要はなし
$ export LPI="Linux Professional Institute" |
主な環境変数 |
説明 |
PATH |
コマンドやプログラムを検索するディレクトリの一覧 |
PWD |
カレントディレクトリ |
HOSTNAME |
ホスト名 |
USER |
現在のユーザー |
LANG |
ロケール(言語処理方式) |
HOME |
カレントユーザのホームディレクトリ |
LOGNAME |
ログインシェルのユーザ名 |
PS1 |
プロンプトの表示文字列 |
PS2 |
複数行にわたる入力時のプロンプト |
◆ 環境変数PATH
プロンプト上で実行するコマンドには内部コマンドと外部コマンドの2種類があります。内部コマンドは
シェル自体に組み込まれているコマンド。外部コマンドとは独立したプログラムとして存在するコマンド。
外部コマンドの場合、環境変数PATHに指定されたディレクトリを順に検索して見つけ出します。環境変数
PATHに定義されていないコマンドを実行する場合は、最上位のディレクトリ( / )から始まる絶対パスで
指定するか、カレントディレクトリ( . ) を基点として相対位置を表す相対パスを指定する必要があります。
例えば、あるユーザの環境変数PATHが以下の結果である場合、/sbin のパスが記載されていません。
$ echo $PATH
/usr/local/bin:/bin/:usr/bin
|
このユーザで /sbin以下にある ifconfig コマンドを実行してもコマンドが存在しないエラーが出力します。
※ ifconfig のコマンド実行権限があれば /sbin/ifconfig のように絶対パスを指定すれば実行できます。
$ ifconfig
bash: ifconfigi command not found
|
そこで、環境変数PATHにパスを追加するために以下の構文でコマンド設定を行います。以下のコマンド
以外にも .bash_profileなどの環境設定ファイルを修正することでPATHの設定を修正することも可能です。
【構文】 PATH=$PATH:追加ディレクトリ名
◆ 環境変数PATHに「/sbin」のディレクトリを追加する設定
|