シェル環境
シェルは、login プログラム、システム初期設定ファイル、ユーザー初期設定ファイルによって定義される変数を含む環境を管理します。また、一部の変数はデフォルトで定義されます。シェルには次の 2 種類の変数があります。
-
環境変数 – シェルによって生成されるすべてのプロセスにエクスポートされる変数。環境変数の設定値は env コマンドで表示できます。PATH などを含む環境変数の一部が、シェルそのものの動作に影響を与えます。
-
シェル (ローカル) 変数 – 現在使用中のシェルだけに関係する変数。C シェルの場合は、シェル変数は環境変数と特別に対応しています。これらのシェル変数は user、term、home、path です。シェル変数は、対応する環境変数の値によって初期設定されます。
C シェルでは、小文字を使って set コマンドでシェル変数を設定し、大文字を使って setenv コマンドで環境変数を設定します。シェル変数を設定すると、対応する環境変数が設定され、その逆もあります。たとえば、path シェル変数を新しいパスで更新すると、シェルは PATH 環境変数も新しいパスで更新します。
Bourne、Korn の両シェルでは、何らかの値に等しい大文字の変数名を使ってシェル変数と環境変数を設定できます。また、export コマンドを使って、その後に実行されるコマンドの変数をアクティブにする必要があります。
すべてのシェルで、シェル変数と環境変数は一般的に大文字の名前で参照します。
ユーザー初期設定ファイルで、ユーザーのシェル環境を、あらかじめ定義された変数の値を変更するか、変数を追加することによってカスタマイズできます。次の表に、ユーザー初期設定ファイルで環境変数を設定する方法を示します。
表 4–19 ユーザー初期設定ファイルでの環境変数の設定方法
環境変数を設定したいシェルタイプ
|
ユーザー初期設定ファイルに追加する行
|
C シェル
|
setenv VARIAVLE value
例:
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 シェル変数と環境変数の説明
変数
|
説明
|
CDPATH (C シェルでは cdpath)
|
cd コマンドで使用する変数を設定する。cd コマンドの対象ディレクトリを相対パス名で指定すると、cd コマンドは対象ディレクトリをまず現在のディレクトリ (.) 内で検索する。対象ディレクトリが見つからなかった場合は、CDPATH 変数のリストの順で検索され、見つかると、ディレクトリの変更が行われる。CDPATH で対象ディレクトリが見つからなかった場合は、現在の作業ディレクトリは変更されない。たとえば、CDPATH 変数を /home/jean に設定し、その下に bin と rje の 2 つのディレクトリがある場合。/home/jean/bin ディレクトリの中で cd rje と入力すると、絶対パスを指定しなくても、ディレクトリを /home/jean/rje に変更することになる
|
history
|
C シェルの履歴を設定する
|
HOME (C シェルでは home)
|
ユーザーのホームディレクトリへのパスを設定する
|
LANG
|
ロケールを設定する
|
LOGNAME
|
現在ログインしているユーザーの名前を設定する。LOGNAME のデフォルト値は、passwd ファイルに指定されているユーザー名にログインプログラムによって自動的に設定される。この変数は参照用にのみ使用し、設定を変更してはならない
|
LPDEST
|
ユーザーのデフォルトプリンタを設定する
|
MAIL
|
ユーザーのメールボックスへのパスを設定する
|
MANPATH
|
アクセスできるマニュアルページの階層を設定する
|
PATH (C シェルでは path)
|
ユーザーがコマンドを入力したときに実行するプログラムについて、シェルが検索するディレクトリを順番に指定する。ディレクトリが検索パス上にない場合は、ユーザーはコマンドの絶対パス名を入力しなければならない
デフォルトの 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 で見つかったバージョンが使用される
|
prompt
|
C シェルのシェルプロンプトを設定する
|
PS1
|
Bourne または Korn シェルのシェルプロンプトを設定する
|
SHELL (C シェルではshell)
|
make、vi、その他のツールが使うデフォルトシェルを設定する
|
TERMINFO
|
terminfo ファイルに追加した、サポートされていない端末のパス名を指定する。/etc/profile または /etc/.login で TERMINFO 変数を使用する
TERMINFO 環境変数を設定すると、システムはまずユーザーが定義した TERMINFO パスを調べる。ユーザーが定義した TERMINFO ディレクトリ内に端末の定義が見つからなかった場合は、システムはデフォルトディレクトリ /usr/share/lib/terminfo で定義を探す。どちらにも見つからなかった場合、端末は dumb として定義される
|
TERM (C シェルでは term)
|
端末を設定する。この変数は /etc/profile または /etc/.login で再設定する必要がある。ユーザーがエディタを起動すると、システムはこの環境変数の定義と同じ名前のファイルを探す。システムは、TERMINFO が参照するディレクトリ内を探して端末の特性を知る
|
TZ
|
時間帯を設定する。これは、たとえば ls -l コマンドで日付を表示する場合に使われる。TZ をユーザーの環境に設定しないと、システムの設定が使用される。設定する場合、グリニッジ標準時が使用される
|