UNIX の変数

変数は、あなたがプログラムを実行する際に、シェルからプログラムへ情報を渡すひとつの方法となります。 プログラムは特定の変数を"環境の中で"探します。変数がみつかれば格納されている値を使用します。 変数は、システムやあなたの他の作業、他のシェル、あるいは別のプログラムによってセットされます。

標準的な UNIX の変数は、環境変数とシェル変数、ふたつのカテゴリに分類されます。 大まかな説明として、シェル変数は一時的な作業の為に現在のシェルで使用されるものです。 環境変数はより重要な意味を持ち、ログイン時にセットされてログイン中は常に有効となります。 慣例的に、環境変数の名前には大文字が用いられ、シェル変数には小文字が用いられます。

環境変数

OSTYPE という環境変数を例に説明します。この変数は現在使用中のオペレーティングシステムの値を持っています。次のコマンドで変数の内容を見ることが出来ます。

% echo $OSTYPE

その他の例として、次のような環境変数があります。

  • USER (あなたのログイン名)
  • HOME (あなたのホームディレクトリのパス)
  • HOST (使用中のコンピュータの名前)
  • ARCH (コンピュータのプロセッサのアーキテクチャ)
  • DISPLAY (X ウィンドウを表示するコンピューターの画面の名前)
  • PRINTER (プリントジョブを送信するデフォルトのプリンター)
  • PATH (シェルがコマンドを検索するべきディレクトリ)

変数の現在の値を探しだす

環境変数は setenv コマンドで定義します。内容は printenv または env コマンドで見ることが出来ます。 変数を破棄するには unsetenv コマンドを使います。

すべての変数の値を確認するには次のコマンドを入力してください。

% printenv | less

シェル変数

history という変数を例に説明します。この変数はコマンドの履歴として保存する数を持っています。 ユーザーはここで設定された数だけコマンドを遡ることが出来ます。次のコマンドで変数の内容を見ることが出来ます。

% echo $history

その他の例として、次のようなシェル変数があります。

  • cwd (現在の作業ディレクトリ)
  • home (あなたのホームディレクトリのパス)
  • path (シェルがコマンドを検索するべきディレクトリ)
  • prompt (ユーザーのログインシェルで対話的なコマンドのプロンプトに使用される文字列)

変数の現在の値を探しだす

シェル変数は set コマンドを使って、値の定義と表示を行います。 unset コマンドで変数を破棄します。

すべての変数の値を確認するには次のコマンドを入力してください。

% set | less

PATH と path の違い

一般的に、(大文字小文字は別として)同じ名前を持っている環境変数およびシェル変数は、初期値を持っていることを除いて独立して扱われます。 しかし、いくつか例外があります。

シェル変数 home, user, term は変更された場合に、対応する環境変数 HOME, USER, TERM も変更されます。しかし、環境変数の変更は対応するシェル変数を変更しません。

PATH と path はプログラムやコマンドの検索ディレクトリを指定します。両方の変数は常に同じディレクトリ リストを表わし、どちらかを変更すると、自動的に他方が変更されます。

変数の設定と使い方

あなたが UNIX ホストにログインするたびにシステムはホームディレクトリにある初期化ファイルを読み取ります。 システムは初期化ファイルの情報から、あなたの作業環境をセットアップします。 C シェルと TC シェルは .login と .cshrc のふたつのファイルを使います。

C シェルは 初めに .login ファイルを読み取って、次に .cshrc ファイルを読み取ります。

.login ファイルはセッション全体にあてはまる条件を設定するために用いられ、ログイン時のみ実行することになっています。

.cshrc ファイルはシェルが呼び出されるたびに実行する条件を設定するために用いられます。

環境変数は .login で定義し、シェル変数は .cshrc で定義するのが良いです。

Warning

.login と .cshrc には、決してウェブブラウザなどのグラフィカルなディスプレイを実行するコマンドを置かないでください。

.cshrc ファイルでシェル変数を設定

コマンドの履歴を保存する最大数を変更してみます。設定するべきシェル変数は history です。 100 が標準値ですが、望むなら増やすことも減らすことも出来ます。

% set history = 200

変数の値を確認します。

% echo $history

上記のやり方では、起動中のシェルでしか有効になりません。新しく xterm ウィンドウを開くとデフォルトの値である 100 になってしまうでしょう。 永久的に history の値を設定するには .cshrc ファイルに set コマンドを書きます。

.cshrc ファイルをユーザーフレンドリなエディタである nedit で開きます。

% nedit ~/.cshrc

既に書かれているコマンドの後に次の行を追記してください。

set history = 200

ファイルを保存して source コマンドで .cshrc ファイルを読み込みます。

% source .cshrc

変数の値を確認します。

% echo $history

パスの設定

あなたがコマンドを入力したときにシェルは path または PATH 変数に定義されているディレクトリからコマンドを探します。 システムが "command: Command not found" というメッセージを返したなら、システムにコマンドが存在しないか、 path に存在しないことを表しています。

例として、 units コマンドを実行するときにはディレクトリを含めて units へのパスを指定するか、path に ~/units174/bin ディレクトリが必要になります。

既存の path に units のディレクトリを追加します。

% set path = ($path ~units174/bin)

$path は現在の値を参照するための記述です。どこのディレクトリからも units が実行できることをテストしましょう。

% cd
% units

永久的に path を設定するには .cshrc ファイルの最後に次の行を追記してください。

set path = ($path ~/units174/bin)


この文書は UNIX Tutorial for Beginners から派生した文書です。 Creative Commons License の下で利用できます。

Creative Commons License


最終更新日: 2011年02月24日(木)


Back to top