シェルは、login プログラム、システム初期設定ファイル、ユーザー初期設定ファイルによって定義される変数を含む環境を管理します。また、一部の変数はデフォルトで定義されます。
シェルには次の 2 種類の変数があります。
環境変数 – シェルによって生成されるすべてのプロセスにエクスポートされる変数。環境変数の設定値は env コマンドで表示できます。PATH などを含む環境変数の一部が、シェルそのものの動作に影響を与えます。
シェル (ローカル) 変数 – 現在使用中のシェルだけに関係する変数。C シェルの場合は、シェル変数は環境変数と特別に対応しています。これらのシェル変数は user、term、home、path です。シェル変数は、対応する環境変数の値によって初期設定されます。
C シェルでは、小文字を使って set コマンドでシェル変数を設定し、大文字を使って setenv コマンドで環境変数を設定します。シェル変数を設定すると、対応する環境変数が設定されます。同様に、環境変数を設定すると、対応するシェル変数も変更されます。たとえば、path シェル変数を新しいパスで更新すると、シェルは PATH 環境変数も新しいパスで更新します。
Bourne、Korn の両シェルでは、任意の大文字の変数名を使って、シェル変数と環境変数の両方を設定できます。また、その後に実行されるコマンドに対して変数を有効にするために、export コマンドを使用します。
すべてのシェルで、シェル変数と環境変数は一般的に大文字の名前で参照します。
ユーザー初期設定ファイルでは、ユーザーのシェル環境を、あらかじめ定義された変数の値を変更するか、変数を追加することによってカスタマイズできます。次の表に、ユーザー初期設定ファイルで環境変数を設定する方法を示します。
表 4–19 ユーザー初期設定ファイルでの環境変数の設定方法
シェルタイプ |
ユーザー初期設定ファイルに追加する行 |
---|---|
setenv MAIL /var/mail/ripley |
|
Bourne または Korn シェル |
VARIABLE=value ; export VARIABLE 例: MAIL=/var/mail/ripley;export MAIL |
次の表では、ユーザー初期設定ファイルでカスタマイズできる環境変数とシェル変数について説明します。各シェルで使用される変数の詳細は、 sh(1)、ksh(1)、csh(1) の各マニュアルページを参照してください。
表 4–20 シェル変数と環境変数の説明
変数 |
説明 |
---|---|
cd コマンドで使用する変数を設定します。cd コマンドの対象ディレクトリを相対パス名で指定すると、cd コマンドは対象ディレクトリをまず現在のディレクトリ (.) 内で検索します。対象ディレクトリが見つからない場合、CDPATH 変数内のパス名のリストが順に検索され、見つかると、ディレクトリの変更が行われます。CDPATH で対象ディレクトリが見つからなかった場合は、現在の作業ディレクトリは変更されません。たとえば、CDPATH 変数が /home/jean に設定されており、/home/jean の下に bin と rje の 2 つのディレクトリがあるとします。/home/jean/bin ディレクトリ内で cd rje と入力した場合、フルパスを指定していなくても、ディレクトリが /home/jean/rje に変更されます。 |
|
C シェルの履歴を設定します。 |
|
ユーザーのホームディレクトリへのパスを設定します。 |
|
ロケールを設定します。 |
|
現在ログインしているユーザーの名前を設定します。LOGNAME のデフォルト値は、passwd ファイルに指定されているユーザー名にログインプログラムによって自動的に設定されます。この変数は参照用にのみ使用し、設定を変更してはいけません。 |
|
ユーザーのデフォルトプリンタを設定します。 |
|
ユーザーのメールボックスへのパスを設定します。 |
|
アクセスできるマニュアルページの階層を設定します。 |
|
ユーザーがコマンドを入力したときに実行するプログラムについて、シェルが検索するディレクトリを順番に指定します。ディレクトリが検索パス上にない場合は、ユーザーはコマンドの絶対パス名を入力しなければなりません。 デフォルトの PATH は、ログインプロセスで .profile (Bourne または Korn シェル) あるいは .cshrc (C シェル) の指定どおりに自動的に定義され、設定されます。 検索パスの順序が重要です。同じコマンドが異なる場所にそれぞれ存在するときは、最初に見つかったコマンドが使用されます。たとえば、PATH が Bourne および Korn シェル構文で PATH=/bin:/usr/bin:/usr/sbin:$HOME/bin のように定義されていて、sample というファイルが /usr/bin と /home/jean/bin の両方にあるものとします。ユーザーが sample コマンドを、その絶対パスを指定しないで入力した場合は、/usr/bin で見つかったバージョンが使用されます。 |
|
C シェルのシェルプロンプトを設定します。 |
|
Bourne または Korn シェルのシェルプロンプトを設定します。 |
|
make、vi、その他のツールが使うデフォルトシェルを設定します。 |
|
代替の terminfo データベースが保存されているディレクトリに名前を付けます。/etc/profile または /etc/.login ファイルで TERMINFO 変数を使用します。詳細は、terminfo(4) のマニュアルページを参照してください。 TERMINFO 環境変数を設定すると、システムはまずユーザーが定義した TERMINFO パスを調べます。ユーザーが定義した TERMINFO ディレクトリ内に端末の定義が見つからなかった場合は、システムはデフォルトディレクトリ /usr/share/lib/terminfo で定義を探します。どちらにも見つからなかった場合、端末は dumb として定義されます。 |
|
端末を設定します。この変数は /etc/profile または /etc/.login ファイルで再設定する必要があります。ユーザーがエディタを起動すると、システムはこの環境変数で定義される名前と同じ名前のファイルを探します。システムは、TERMINFO が参照するディレクトリ内を探して端末の特性を知ります。 |
|
時間帯を設定します。時間帯は、たとえば ls -l コマンドで日付を表示する場合に使われます。TZ をユーザーの環境に設定しないと、システムの設定が使用されます。設定する場合、グリニッジ標準時が使用されます。 |