シェルはユーザが入力したコマンドラインを対話的に処理するだけでなく,あ らかじめ処理の内容をファイルに書いておき,一連の作業として実行できる. 処理の内容を記述したものをスクリプトと呼び,その内容を書いておくファイ ルをスクリプトファイルという.
CNSではtcshというシェルが標準環境で使われており,条件分岐や繰り 返しのような処理ができる.このためシェルスクリプトの中ではプログラミン グ言語(→)と同じ制御構造を使える.同じ処理を何度も繰り返 す場合や,コマンドラインからでは難しい複雑な処理も,スクリプトを書くこ とによって容易に行える.シェルスクリプトの例を次に示す.
先頭行が``#!
''で始まると,それに続く絶対パス名でそのファイルを
実行するコマンドを指定できる.この例では,実行するコマンドを/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 % _
ユーザは,シェル変数と環境変数という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<RET>
addsuffix
argv ()
cwd /home/t98000tf/
echo_style bsd
edit
gid 100
history 100
home /home/t98000tf
:
% _
シェルにはユーザが設定した変数以外にも,あらかじめ用意されている``定義 済みシェル変数''がある.これはシェルの実行環境を規定している.定義済み シェル変数を変更することによって,ユーザのシェル環境を自由に変えられる. 定義済みシェル変数のうちの一部を,表→に示す.
次に定義済みシェル変数の変更例を示す.
次に定義済みシェル変数の変更例を示す.
次に定義済みシェル変数の変更例を示す.
例えば次のように設定すると,ホームディレクトリの下にあるmydirディ レクトリにある実行ファイルを,ファイル名だけでコマンドとして呼び出せる ようになる.
% test<RET> test: Command not found. % ~/mydir/test<RET> This is my test script. % set path = ($path ~/mydir)<RET> % test<RET> This is my test script. % _
$path
をパスの前に書き忘れるとCNSで標準設定されているパスが
上書きされてしまい,通常利用できるコマンドが利用できなくなってしまうの
で,注意すること.
$path
をパスの前に書き忘れるとCNSで標準設定されているパスが
上書きされてしまい,通常利用できるコマンドが利用できなくなってしまうの
で,注意すること.
$path
をパスの前に書き忘れるとCNSで標準設定されているパスが
上書きされてしまい,通常利用できるコマンドが利用できなくなってしまうの
で,注意すること.
% set prompt = "%m:%c %"<RET>
m34:~/document %_
%m
と%c
を利用したが同様にプロンプトの設定におい
て利用できる主な文字列を表→に示す.
現在設定されている環境変数の一覧を表示するには,printenvコマンド
を用いる.printenvコマンドの後に引数として環境変数名を指定すると,
その変数だけが表示される.その他に,変数の前に$
をつけてechoコマンドでも表示できる.
環境変数を設定するには,setenvコマンドを用いる.
% printenv [環境変数名]<RET> % setenv [環境変数名] [値]<RET>
なお,ディスプレイ名は通常,利用中のホストにシールで貼ってある名前に :0.0を加えたものである.次の例ではディスプレイをhost00:0.0 に指定している.
% printenv DISPLAY<RET> % setenv DISPLAY host00:0.0<RET> % printenv DISPLAY<RET> host00:0.0 % _
% setenv PAGER less<RET>
% _