では実際にどのような環境変数が定義されているか見てみましょう。printenv というコマンドを使います。
% printenv HOME=/home/iwashi SHELL=/bin/csh TERM=sun-cmd USER=iwashi PATH=/home/iwashi/bin:/usr/local/bin:/usr/ucb:/bin: /usr/bin:/usr/bin/X11:/usr/new:. MAIL=/usr/spool/mail/iwashi % \begin{verbatim} これは環境変数の極く一部ですが、初めてログインしたときなどは場合によっ てはこの程度しか定義されていないかも知れません。これらの環境変数は非常 に大事なものなので不注意に書き換えると何もできなくなってしまう可能性が あります。とりあえず見るだけにしておいてください。ここに書かれた変数は 普通cshはそのコピーをシェル変数として使っています。どちらかを設定すれ ば両方が同じ値を保持します。 すでに定義されている環境変数はそのままおいておきますが、自分で新しい環 境変数を設定してみましょう。setenvというコマンドを使います。 \begin{verbatim} % setenv MY_DATA_PATH ~/data % printenv MY_DATA_PATH /home/iwashi/data % \begin{verbatim} MY\_DATAPATHという変数が定義されました。この変数は自分のプログラムの中 でgetenvなどを使って調べることができます。不必要になった変数は \begin{verbatim} % unsetenv MY_DATA_PATH %
で削除することもできます。環境変数はもちろんシェルに対するコマンド文字 列の中でその時の値を使うことができます。例えば次のように使います。
% myanalysis $MY_DATA_PATH/run20001.dat
こうするとmyanalysisというプログラムには/home/iwashi/data/run20001.dat というファイル名が渡されることになります。場合によって環境変数と他の文 字列の境目がはっきりしないと正しく変換されないときがあります。その時は 変数名をでくくります。makeのときは()でした。cshでは()は別の働きをし ます。
環境変数はUNIXのコマンドやプログラムが参照するデータベースですからその コマンド毎にどのような環境変数を参照するかが決まっています。例えばXウ インドウでは、どのX端末をXサーバに使うかを表す、DISPLAYという環境変数 を参照します。コマンドmanはマニュアルページを探すディレクトリをMANPATH という変数から調べます。。自分の身近にあるプリンターをPRINTERという変 数に書いておくとlprで-Pのスイッチが必要なくなります。変数を設定する必 要があるかどうかはmanなどでそのコマンドを調べて見つけてください。
環境として重要なのはPATHです。コマンドをどこから探してくるかを表してい ます。例えば他の人が使っているコマンドが自分では使えないとき、PATHにそ のコマンドのあるディレクトリが書かれていないことが考えられます。PATHで は検索するディレクトリを:で区切って並べます。PATH変数に例えば/etcを追 加しましょう。
% setenv PATH ${PATH}:/etc
これは、現在設定されているPATHの値と:/etcをくっつけて新たにPATHを定義 しています。先ほど説明した環境変数の引用を使っています。