next up previous contents index
Next: 4.10 シェルのカスタマイズ Up: 4. シェルを利用する Previous: 4.8 ジョブ管理


4.9 スクリプトと変数


     
4.9.1 スクリプト

シェルはユーザが入力したコマンドラインを対話的に処理するだけでなく,あ らかじめ処理の内容をファイルに書いておき,一連の作業として実行できる. 処理の内容を記述したものをスクリプトと呼び,その内容を書いておくファイ ルをスクリプトファイルという.

 

  CNSではtcshというシェルが標準環境で使われており,条件分岐や繰り 返しのような処理ができる.このためシェルスクリプトの中ではプログラミン グ言語()と同じ制御構造を使える.同じ処理を何度も繰り返 す場合や,コマンドラインからでは難しい複雑な処理も,スクリプトを書くこ とによって容易に行える.シェルスクリプトの例を次に示す.


\begin{figure}
{file}
...

先頭行が``#!''で始まると,それに続く絶対パス名でそのファイルを 実行するコマンドを指定できる.この例では,実行するコマンドを/bin/shに指定している.この他にも,tcshやperl () などを指定できる.先頭行以外が``#''で始まると,コメントアウトと して無視される.

またこの例では``Hello.''と``Now..''をシェルに表示し(echoコマンド), その後,日時を表示する(dateコマンド)ように設定されている.シェル スクリプトの書き方についての詳細は市販のマニュアルなどを参照してほしい.

スクリプトファイルは,先頭行で実行するコマンドを指定して,かつそのファ イルの保護モード()が実行を許可していれば,コマン ドとして実行できる.例として示したスクリプトが`now'という名前の ファイルに書かれていた場合,次のような手順で`now'をコマンドとし て実行できる.



% ls -F<RET>
now
% chmod u+x now<RET>
% ls -F<RET>
now*
% now<RET>
Hello.
Now..
Mon Nov 25 11:28:49 JST 1998
% _



   
4.9.2 シェル変数と環境変数

ユーザは,シェル変数と環境変数という2つの変数を利用することによって, シェルやコマンドの動作を操作できる.この2つの変数には次のような違いが ある.

次にこの2つを詳しく説明していく.

なお,.cshrcを利用することで,変数を特定の値に設定できる.詳しく はで述べる.

     
シェル変数

シェル変数は,基本的にプログラミング言語の変数と同じで,自由に設定でき る.設定にはsetコマンドを用い,設定した値を参照するには`$変数名'とする.また,1度設定したシェル変数を無効にするには, unsetコマンドを用いる.

% set [変数名] = 設定値<RET>
% unset [変数名]<RET>
% set history = 300<RET>
% echo $history<RET>
300
% unset history<RET>
% echo $history<RET>
history: Undefined variable.
% _
また,現在設定されているシェル変数の一覧を確認するには,setコマ ンドを引数なしで実行する.

% set<RET>
addsuffix
argv    ()
cwd     /home/t98000tf/
echo_style      bsd
edit
gid     100
history 100
home    /home/t98000tf
   :
% _

シェルにはユーザが設定した変数以外にも,あらかじめ用意されている``定義 済みシェル変数''がある.これはシェルの実行環境を規定している.定義済み シェル変数を変更することによって,ユーザのシェル環境を自由に変えられる. 定義済みシェル変数のうちの一部を,表に示す.


 
表: 代表的な定義済みシェル変数
 
変数 意味
fignore この変数で参照する文字列を持つファイル名は, シェルの補完機能で補完する候補の対象から外す
history コマンド履歴機能を有効にし,参照される値のコマンドラインを記憶する
ignoreeof 設定すると C-dを押してもログアウトしない
path ファイルシステム中に遍在するコマンドを探すディレクトリを指定する
prompt プロンプトの形式を指定する

次に定義済みシェル変数の変更例を示す.