tcsh - C シェルを起動する

形式

tcsh [–bcdeFfimnqstvVxX]

tcsh –l
注: –l は、i の大文字ではなく、L の小文字です。

説明

tcsh シェルは、バークレー UNIX C シェル tcsh の拡張完全互換バージョンです。 これは、対話式ログイン・シェルとしても、またシェル・スクリプト・ コマンド・プロセッサーとしても使用可能なコマンド言語インタープリターです。 このシェルは、コマンド行エディター、プログラマブル・ワード補完機能、スペル訂正機能、ヒストリー・メカニズム、およびジョブ制御を含んでおり、構文が C と似ています。

このシェルは、明示的に tcsh コマンドを入力して起動すること ができます。引数として –l オプションだけを指定してシェルを起動 することによっても、ログイン・シェルを指定することができます。

ログイン・シェルは、システム・ファイル /etc/csh.cshrc および /etc/csh.login から のコマンドを実行して開始されます。その後、ユーザーのホーム・ディレクトリー内のファイルからコマンドを実行します。最初に、 ~/.tcshrc、次に ~/.history (または histfile シェル変数の値)、それから ~/.login、最後に ~/.cshdirs (または dirsfile シェル変数の値) です。シェルは、 /etc/csh.cshrc の後に /etc/csh.login を 読み取ります。

非ログイン・シェルは、呼び出し時に /etc/csh.cshrc および ~/.tcshrc または ~/.cshrc だけしか読み取りません。

ログインごとに一度だけ実行する必要のある、コマンドに似た stty は、通常、ユーザーの ~/.login ファ イルに入ります。

一般には、このシェルは、> のプロンプトを出し、端末からのコマンドの 読み取りを開始します。シェルは、コマンド入力行を繰り返し読み取り、ワードに分割し、それをコマンド・ヒストリー・リストに入れます。それから行の各コマンドを解析して実行します。コマンド実行を参照してください。

tcsh シェル・セッションからのログアウトは、空の行に ^Dlogout、または login を入力するか (ignoreeof シェル変数を参照してください)、シェルの自動ログアウト・メカニズムを使用して行うことができます。ログイン・シェルは、終了時に、logout シェル変数 を状況に応じて normal か automatic に設定し、その後ファイル /etc/csh.logout および ~/.logout からコマンドを実行します。
注: システムのログイン・ファイルおよびログアウト・ファイルの名前 は、種々のバージョンの csh シェルとの互換性を保つため、システムによっ て異なります。tcsh ファイルを参照してください。
制約事項: 自動変換を有効にした状態でタグ付きスクリプトが実行されている場合ロケールのコード・ページは SBCS である必要があります。

オプション

tcsh シェルの最初の引数 (引数 0) が - (ハイフン) である場合、それはログイン・シェルです。引数として –l だけを指定 して tcsh シェルを起動することによっても、ログイン・シェルを指定する ことができます。

z/OS UNIX System Servicesの tcsh シェルは、以下のオプションをコマンド行で受け入れます。
–b
強制的にオプション処理を中断し、これ以降のシェル引数はすべて 非オプション引数として扱われるようにします。 残りの引数はシェル・オプションして解釈されません。これは、あいまいさを避けて間違いなくオプションをシェル・スクリプト に渡すのに使用できます。
–c
コマンド・シェルに保管されているコマンドを読み取って実行します (この オプションは必ず指定しなければならず、単一引数でなければなりません)。 残りの引数はすべて argv シェル変数に入れられます。
–d
ログイン・シェルかどうかにかかわりなく、 ~/.cshdirs から ディレクトリー・スタックをロードします。
–e
起動されたコマンドが異常終了するか、またはゼロ以外の出口 状況を生成した場合に、シェルを終了させます。
–i
端末ではないような場合でも、対話式シェルを起動し、最上位入力を 促します。シェルの入力および出力が端末で行われる場合、このオプションを 指定しなくてもシェルは対話式になります。
–l
ログイン・シェルを起動します。–l だけをオプションとし て指定する場合にのみ使用可能です。
注: –l は、i の大文字ではなく、L の小文字です。
–m
~/.tcshrc が実効ユーザーに属してい なくても、これをロードします。
–n
コマンドを解析しますが、実行はしません。これは、シェル・スクリ プトのデバッグに役立ちます。
–q
SIGQUIT を受け入れ、これがデバッガーのもとで使用される際に動作 します。 ジョブ制御は使用不可にされます。
–s
標準入力からのコマンド入力を受け取ります。
–t
1 行の入力を読み取って実行します。¥ (円記号) は、この行の終わりで改行するのを避けて別の行に継続するために使用できます。
–v
ヒストリー置換の後にコマンド入力がエコーされるように verbose シェル変数を設定します。
–V
~/.tcshrc を実行する前でも verbose シェル変数を設定します。
–x
実行の直前にコマンドがエコーされるように echo シェル変数を設定します。
–X
これと –x との関係は、–V–v との 関係と同じです。

オプション引数を処理した後に引数がまだ残っていて、–c–i–s、または –t のいずれも 指定されていない場合には、最初の引数が、実行されるコマンドのファイル (つまりスクリプト) の名前とみなされます。 シェルはこのファイルを開き、その名前を保管します。おそらく その名前は $0 で再置換されます。 多くのシステムでは、シェル・スクリプトがこの シェルとの互換性のないようなシェルを使用するので、tcsh シェルでは その文字が # ではない (つまりコメントで始まっていない) スクリプトを実行するために そのような標準シェルを使用します。

残りの引数は argv シェル変数に入れられます。

tcsh シェルの編集

このトピックでは、まずコマンド行エディターについて説明します。 その 後、「補完機能とリスト機能」ならびに「スペル訂正機能」について解説します。これらは エディター・コマンドとして実装されている 2 組の機能ですが、注目すべきもの なので別個に扱います。最後の「エディター・コマンド」のトピックでは、tcsh シェルに固有のエディター・コマンドおよびそれらのコマンドのデフォルト・バインディングをリストして説明します。

コマンド行エディター

コマンド行入力は、GNU Emacs または vi で使用されるキー・シーケンスと 非常によく似たキー・シーケンスを使って編集することができます。 エディターは、編集シェル変数を設定している場合にしかアクティブになりま せん。編集シェル変数はデフォルトでは対話式シェル内にあります。 bindkey 組み込みコマンドはキー・バインディングを表示したり変 更したりできます。 デフォルトでは、Emacs タイプのキー・バインディングが使用されますが、bindkey でそのキー・バインディングを vi タイプのバインディング に変更することができます。

シェルは矢印キーを常に次のものにバインドします。
down
ヒストリーの下方移動
up
ヒストリーの上方移動
左矢印キー
文字後方移動
右矢印キー
文字前方移動
ただし、このバインディングにより別の単一文字バインディングが変更され る場合は別です。そうしたバインディングを防ぐには、矢印キーのエスケープ・シーケンス を settc で空ストリングに設定します。
その他のキー・バインディングの大半は、emacs ユーザーおよび vi ユーザ ーが予期しているようなものであり、それらは bindkey を使って 容易に表示することができます。 bindkey を使えば、エディター・コマンドとその簡単な説明をリス トすることもできます。
注: エディター・コマンドでのワード の概念は、tcsh シェルのそれとは異なっています。エディターは、シェル変数ワード文字にはない任意の 非英数字の文字でワードを区切ります。tcsh シェルは、空白文字および特別の意味を持つ一部の文字のみを認識します。それらの文字は、コマンド構文に示してあります。

補完機能とリスト機能

tcsh シェルは、固有の省略形が与えられると、それを補完にできる 場合がよくあります。ワードの一部 (例えば、ls /usr/lost) を入力してか ら、タブ・キーを押して complete-word エディター・ コマンドを実行してください。このシェルが、入力バッファー内の不完全なワードを完全なワードに置換し、ファイル名 /usr/lost を完全な名前 /usr/lost+found にします。 (末尾の / (スラッシュ) に注目してください。補完機能により、補完さ れたディレクトリーの末尾には / が追加され、補完された他のワードの末尾に スペースが追加されます。このようにして、入力が速く行われ、また補完機 能が正常に実行されたことが目で見て分かります。 addsuffix シェル変数を使用すれば、この設定を解除して、これが行われないようにすることができます。)一致するものが 見つからない場合 (例えば、/usr/lost+found が存在しない場合など) は、端末のベルが鳴ります。 ワードがすでに完全なものである場合 (例えば、ご使用のシステムに /usr/lost が存在する場合や、 あらかじめすべてを入力しておいた場合など) は、/ またはスペースが末尾に追加されます (/ やスペースがまだ末尾に付いていない場合)。

補完機能は、行の末尾以外ならどこででも作用し、テキストが補完さ れると、行の残りの部分は右側に押されることになります。 ワードの中間あたりで補完機能が働くと、カーソルの右側の文字が残 ってしまい、それを削除しなければならないことがよくあります。

コマンドと変数は大体同じ仕方で補完することができます。 例えば、em [tab] と入力 すると、システム内に 'em' で始まるコマンドが emacs だけし かなければ、'em' が完全な形の 'emacs' になります。補完機能は、パス内の任意のディレクトリーの中にあるコマンドを検出する ことができ、またある絶対パス名を与えられた場合もコマンドを検出できます。 echo $ar[tab] と入力すると、'ar' で始ま る変数がほかになければ、'$ar' は完全な形の '$argv' になります。

シェルは入力バッファーを解析して、補完するワードがファイル名なのか、コマンドなのか、あるいは変数なのかを判別します。 バッファー内の最初のワード、および ';'、'|'、'|&'、'&&' また は '||' の後に続いている最初のワードは、コマンドとみなされます。 '$' で始まっているワードは変数とみなされます。その他のものはファイル名です。空の行はファイル名として 補完されます。

^D を入力して delete-char-or-list-or-eof エディター ・コマンドを実行すれば、あるワードの完全な形のものをリスト することができます。tcsh シェルは、組み込まれた ls-F を使用して存在する補完を リストした後、プロンプトと完全でないコマンド行を再度出力しま す。例えば、次のようになります。変更の始まり
> ls /usr/l[^D]
lbin/ lib/ local/ lost+found/
> ls /usr/l 
変更の終わり
autolist シェル変数が設定されている場合、tcsh シェルは補完機能が失敗したら必ず、残りの選択項目 (ある場 合) をリストします。
> set autolist
> nm /usr/lib/libt[tab]
libtermcap.a@ libtermlib.a@
> nm /usr/lib/libterm

autolistambiguous に設定されている場合、選択項目がリストされるのは、一致するものが複数個あり、補完機能がマッチングを行う名前に新しい文字を追加しなかった場合だけです。

補完されたファイル名には、 変数、~ (波形記号: 『ファイル名の置換』を参照) で省略された自分または他人のホーム・ディレクトリー、 および = (等号: ディレクトリー・スタック置換を参照) で省略されたディレクトリー・スタック項目が含まれます。 例えば、以下のとおりです。
> ls ~k[^D]
kahn kas kellogg
> ls ~ke[tab]
> ls ~kellogg/

or

> set local = /usr/local
> ls $lo[tab]
> ls $local/[^D]
bin/ etc/ lib/ man/ src/
> ls $local/
 
変数は、expand-variables エディター・コマンドを使って明示的に展開することもできます。

delete-char-or-list-or-eof は行の最後にリストす るだけです。行の中間あたりではカーソル位置の文字を削除し、空の行の場 合にはログアウトしてしまいます。また ignoreeof が設定 されている場合には何も行われません。エディター・コマンド list-choices にバインドさ れた M-^D は、行のどの部分においても存在する補完をリストしま す。また望むならば、list-choices (あるいは削除やリストやログアウトを行うまたは行わない、delete-char-or-list-or-eof の項に示されて いる関連エディター・コマンドのいずれか) を組み込みコマンド bindkey を使って ^D にバインドすることができます。

complete-word-fwd および complete-word-back エディター・コマンド (デフォルトでは いずれのキーにもバインドされていない) を使用すれば、存在する 補完のリスト中を前後に移動して、現行のワードをリスト中 の次のワードまたは前のワードに置き換えることができます。

tcsh シェル変数 fignore は、補完機能が無 視する接尾部のリストに設定することができます。以下の点を考慮してください。
    > ls
    Makefile condiments.h~ main.o side.c
    README main.c meal side.o
    condiments.h main.c~
    > set fignore = (.o ¥~)
    > emacs ma[^D]
    main.c main.c~ main.o
    > emacs ma[tab]
    > emacs main.c 
補完機能は 'main.c~' と 'main.o' を無視します (ただし、リ ストはされます)。それらが、fignore の中の 接尾部で終わっているからです。~ が展開されてホームにならないように ~ の前に ¥ を付ける 必要があります (『ファイル名の置換』を参照)。 補完が 1 つしかない場合には、fignore は無視されます。

complete シェル変数を enhance に設定すると、補完機能は、1.) 大文字小文字を無視し、2.)ピリオド、ハイフンおよ び下線 ('.'、'-' および '_') をワード・セパレーターとみなし、ハイフンと下線を同じものとみなし ます。

以下のようなファイルがあるとします。
comp.lang.c comp.lang.perl comp.std.c++
comp.lang.c++ comp.std.c
その場合に mail -f c.l.c[tab] と入力する と、それは完全な形にされて mail -f comp.lang.c のよ うになり、^D を入力すると、comp.lang.c および comp.lang.c++ が リストされます。mail -f c..c++[^D] の場合には、comp.lang.c++ と comp.std.c++ がリストされます。以下のディレクトリーで rm a--file[^D] を指定した場合、
A_silly_file a-hyphenated-file another_silly_file
3 つのファイルすべてがリストされます。これは大文字小文字が無視され、ハイフンと下線が同じとみなされるからです。ただし、ピリオドはハイフン や下線と同等ではありません。
補完機能とリスト機能は、いくつかの他の tcsh シェル変数の影響も受けま す。例えば、recexact を設定すると、さらに入力すれ ばもっと長いもので一致するものがある場合でも、存在する最も短い 特定の一致ワードだけが得られるようになります。例えば、以下のとおりです。
> ls
fodder foo food foonly
> set recexact
> rm fo[tab]
この場合、'fo' は 'fod' または 'foo' に展開できるのでビープ音が鳴りま す。しかし、さらに 'o' を次のように入力すると、
> rm foo[tab]
> rm foo 
'food' や 'foonly' も一致していますが、補完機能によって得られる のは 'foo' だけです。autoexpand を設定すれば、補完機能が試みられるたびにそれに先立って expand-history エディター・コマンドが実行されるようになり、correct を設定すれば、ユーザーが Enter キーを 押すと、コマンドが自動的に補完されるようになります。 matchbeep は、さまざまな状況において 補完機能がビープ音を鳴らすようにも鳴らさないようにも設定でき、nobeep を設定するとビープ音がまったく鳴らないよ うにすることができます。nostat を、ディレクト リーのリスト、およびディレクトリーと一致するパターンのリスト (あるい はその両方) に設定すれば、補完機能がそれらのディレクトリー を stat(2) しないようにすることができます。
注: 補完機能は正常に、しかも高速で実行されます。 nostat の設定は、listflags 変数を使用すると明らかになります。例えば、以下のとおりです。
>set listflags=x>
ls-F /u/pluto
Dir1/exe1*
>set nostat=(/u/pluto/)
>ls-F /u/pluto
Dir1exe1
>
ただし、末尾の / (スラッシュ) を保持する場合には、nostat を設定する際に注意が必要です。
listmax および listmaxrows を設定すれば、最初に要求しなくても、リストされる項目および行の数を (それぞれ) 制限 することができます。 recognize_only_executables を設定すれば、コマンドをリストする際に、シェルが実行可能ファイルだけをリストするよ うにすることができますが、かなり速度が遅くなります。

最後に、complete 組み込みコマンドを使用すれば、ファイ ル名やコマンドや変数以外のワードを補完する方法をシェルに指 示することができます。補完機能とリスト機能はグロブ・パターン (ファイル名の置換を参照)) に 対しては働きません。しかし、list-glob およ び expand-glob エディター・コマンドがグロブ・パ ターンに対して同等の機能を実行します。

スペル訂正機能

tcsh シェルは、ファイル名、コマンド、および変数名を補完およびリスト するだけでなく、ときにはそれらのスペルを訂正することもできます。

個々のワードは、spell-word エディター・ コマンド (通常は、M-s および M-S にバインドされています。ここで、M は Meta キーまたは Esc (エスケープ) キーを表します) を使用してスペル訂正を行う ことができ、入力バッファー全体は spell-line (通常は M-$ にバインドされています) を使用してスペル訂正できます。 correct シェル変数を 'cmd' に設定すると コマンド名を訂正でき、'all' に設定すると行全体を訂正できます。Enter キーを押すたびに訂正されます。

上記のいずれかの仕方でスペル訂正機能を起動した場合に、コマンド行の一 部のスペルが誤っているとシェルが判断すると、訂正された行を表示して 入力を促します。
> set correct = cmd
> lz /usr/bin
CORRECT>ls /usr/bin (y|n|e|a)?
ここで、'y' またはスペースを入力して訂正済みの行を実行するか、'e' と応答して入力バッファー内の未訂正のコマンドをそのまま残すか、'a' と応答して (^C を押した場合のように) コマンドを打ち切るか、その他のものを押して元の行を未変更のまま実行することができます。

スペル訂正機能はユーザーが定義した補完を認識 します (complete 組み込みコマンドを参照)。 補完を定義する位置の入力ワードが、補完のリストにあるワードと 似ている場合には、スペル訂正機能はスペルの誤ったものを登録して、それ を正しいものとして示します。しかし、入力ワードが、その位置での 補完のいずれとも一致しなければ、スペル訂正機能は スペルの誤ったものを登録しません。

補完機能と同様に、スペル訂正機能は行のどの位置ででも働き、行の残りの 部分を右側に押しやり、おそらく余分の文字をカーソルの右方に残します。

スペル訂正機能は、意図した通りに働くと は限りません。これは一般的には試験的な機能とお考えください。

エディター・コマンド

bindkey はキー・バインディングをリストします。bindkey -l はエディター・コマンドをリストして、それらの簡単 な説明を示します。ここでは、新規のエディター・コマンドまたは特に興味 深いエディター・コマンドだけを説明します。 それぞれのエディター・コマンドのキー・バインディングの説明については、emacs および vi を参照してください。

それぞれのコマンドがデフォルトでバインドされている文字 (単一文字または 複数文字) は、括弧の中に示してあります。 ^文字 は制御文字を意味し、M- 文字 は、メタキ ーを持たない端末でエスケープ文字として入力されるメタ文字を意味しています。 大文字小文字の区別は重要ですが、デフォルトで文字にバインドされている コマンドは、便宜上、大文字と小文字の両方にバインドされています。

complete-word
補完機能とリスト機能で説明されているようにワードを補完します。
complete-word-back
complete-word-fwd に似ていますが、リスト の最後から先頭へと進むという点で異なります。
complete-word-fwd
現行のワードを、存在する補完のリスト内にある最 初のワードで置き換えます。リストの先頭から置換が順に繰り返されます。 リストの最後に到達すると、ビープ音が鳴り、完全でないワードに戻ります。
complete-word-raw
complete-word と似ていますが、ユーザー定義の補完を無視するという点で異なります。
copy-prev-word
現在行の直前のワードを入力バッファーにコピーします。insert-last-word も参照してください。
dabbrev-expand
現行のワードが先行サブストリングとなっているよ うな、前に現れている最新のワードへ現行のワードを展開し、必要に応じて ヒストリー・リストを (一度だけ) 循環します。 途中で入力しないで dabbrev-expand を繰り返すと、順にその前のワードに変更されてゆき、一致した同一のものをスキップします。history-search-backward の動作と大体似ています。
delete-char (バインドされていません)
カーソル位置の文字を削除します。delete-char-or-list-or-eof も参照してください。
delete-char-or-eof (バインドされていません)
カーソル位置に文字がある場合には delete-char を実行し、空ファイルに対しては end-of-file を実行します。delete-char-or-list-or-eof も参照してください。
delete-char-or-list (バインドされていません)
カーソル位置に文字がある場合には delete-char を実行し、行の最後では list-choices を実行します。delete-char-or-list-or-eof も参照してください。
delete-char-or-list-or-eof (^D)
カーソル位置に文字がある場合には delete-char を実行し、行の最後では list-choices を実行し、空の行に対しては end-of-file を実行します。 delete-char-or-eofdelete-char-or-list およ び list-or-eof も参照してください。
ヒストリーの下方移動
up-history と似ていますが、下方移動して、元の入力行で停止するという点で異なっています。
end-of-file
ファイル終わりのシグナルを送り、tcsh シェルが終了します。ただし、そうならないように ignoreeof シェル変数が設定さ れていないことを条件とします。delete-char-or-list-or-eof も参照してください。
expand-history (M- スペース)
現行ワードの中のヒストリー置換子を展開します。ヒストリー置換を参照してください。magic-spacetoggle-literal-history、および autoexpand シェル変数も 参照してください。
expand-glob(^X-*)
カーソルの左方のグロブ・パターンを展開します。例えば、以下のとおりです。
>ls test*[^X-*]
上記は次のように展開されます。
>ls test1.c test2.c
これは、'test' で始まるファイルがディレクトリー内に 2 つしかない場 合です。ファイル転送プロトコル (File name substitution を参照。
expand-line (バインドされていません)
expand-history と似ていますが、入力バッファー内のそれぞれのワードのヒストリー置換子を 展開するという点で異なっています。
expand-variables (^X-$)
カーソルの左方の変数を展開します。変数置換を参照してください。
history-search-backward (M-p、M-P)
入力バッファー内の現在の内容で始まっているコマンドを見つけるた めにヒストリー・リストを上方に向かってカーソル位置まで検索し、検索した コマンドを入力バッファーにコピーします。検索ストリングは、'*'、'?'、'[]' また は '{}' を含んでいるグロブ・パターン (ファイル名の置換を参照) でも構いません。 up-history および down-history は、ヒストリー・リスト内の該当する点から開始され ます。 Emacs モード専用です。 history-search-forward および i-search-back も参照してください。
history-search-forward(M-n、M-N)
history-search-backward と似ていますが、下方に向かって検索するという点で異なっています。
i-search-back (バインドされていません)
history-search-backward のように上方に向 かって検索し、カーソルをパターンの最後に位置付けた状態で、最初に見つかった一致したものを入力バッファーにコピーし、'bck: ' と その最初に見つかった一致したものを表示して入力を促します。 検索をさらに行うために追加の文字を入力することもできます。 i-search-back を入力すれば、同じパターンでの検索を続行し、必要に応じてヒストリー・リストを 循環することができます (これを行うためには、i-search-back は単一文字にバインドする必要があります)。あるいは以下の特殊文字のいずれかを入力することもできます。
^W
カーソル位置のワードの残りの部分を検索パターンに付加します。
delete (または backward-delete-char にバインドされた任意の文字)
最後の文字の働きを取り消して、適切な場合には検索パターンから 文字を削除します。
^G
直前の検索が正常に実行された場合に、検索全体を打ち切ります。 正常に実行されなかった場合には、正常に実行された最後の検索に戻 ります。
escape
検索を終了し、現在行を入力バッファーに残します。
self-insert-command にはバインドされていない その他の文字を入力すると、検索は終了し、現在行が入力バッファ ーに残され、入力された文字は正常入力として解釈されます。 特にキャリッジ・リターンの場合には、現在行が実行されます。 Emacs モード専用です。i-search-fwd およ び history-search-backward も参照してください。
i-search-fwd
i-search-back と似ていますが、下方に向かって検索するという点で 異なっています。
insert-last-word (M-_)
直前の行の最後のワード (!$) を入力バッファーに挿入します。copy-prev-word も参照してください。
list-choices (M-D)
補完機能とリスト機能で説明されているように存在する補完をリストします。delete-char-or-list-or-eof も参照してください。
list-choices-raw (^X-^D)
list-choices と似ていますが、ユーザー定義 の補完を無視するという点で異なっています。
list-glob (^X-g, ^X-G)
(ls-F を介して) カーソルの左方のグロブ・ パターン (ファイル名の置換を参照) と一致するものをリストします。
list-or-eof (バインドされていません)
list-choices を実行するか、空の行に対して は end-of-file を実行します。delete-char-or-list-or-eof も参照してください。
magic-space (バインドされていません)
expand-history のように現在行のヒストリー 置換子を展開します。またスペースを付加します。 magic-space はスペース・バーにバインドされる よう設計されていますが、デフォルトではバインドされていません。
normalize-command (^X-?)
PATH の中から現行ワードを検索し、それが見つかったなら、実行可能 ファイルへの絶対パスでそれを置き換えます。 特殊文字は引用符で囲みます。 別名は展開して引用符で囲みますが、別名内のコマンドはそのようにはしま せん。このコマンドは、コマンドを引数として取るようなコマンド (例えば、dbxsh -x) で役立ちます。
normalize-path (^X-n, ^X-N)
symlinks シェル変数の expand 設定で説明されているように現行ワードを展開します。
overwrite-mode (バインドされていません)
入力モードと上書きモードの切り替えを行います。
run-fg-editor (M-^Z)
現在の入力行を保管し、EDITOR または VISUAL 環境変数のファイル名 部分の最後のコンポーネントと同じ名前 (どちらの変数も設定されていなければ、ed または vi) を持つ停止済みジョブを探します。 そのようなジョブが見つかったなら、fg %job が入力された場合の ようにそれが再始動されます。これを使用すると、エディターとシェルの間で 相互に容易に切り替えられます。これをもっと簡単に行えるように、このコマンドを ^Z にバインドする人々もいます。
run-help (M-h、M-H)
補完機能のルーチンと同じ現行コマンドの概念を用いて、現行コマンドに関する資料を探し、それを出力します。 ページャーを使用する方法はありません。run-help はショート・ヘルプ・ファイル用に設計さ れています。 資料は、command.help、command.1、command.6、command.8 または command と名付けられたファイル (これは HPATH 環境変数にリストされてい るディレクトリーのいずれかに入っている必要があります) に入っていなけ ればなりません。 複数のヘルプ・ファイルがある場合には、最初のものだけが出力されます。
self-insert-command (テキスト文字)
挿入モード (デフォルト) では、入力文字を入力行のカーソル位置の文字 の後に挿入します。それ以外のモードでは、カーソル位置の文字を入力文字 で置き換えます。行が変わっても通常は入力モードのままですが、inputmode シェル変数 を insert または overwrite に設定すれば、各行の先頭でエディターを該当するモードに することができます。 overwrite-mode も参照してください。
sequence-lead-in (矢印接頭部、メタ接頭部、^X)
続く文字が複数キー・シーケンスの一部であることを指示します。あるコマンドを複数キー・シーケンスにバインドすると、2 つの バインディング (先頭文字と sequence-lead-in と のバインディングおよびシーケンス全体とコマンドとのバインディング) が できあがります。 sequence-lead-in にバインドされた文字で始まって いるすべてのシーケンスは、別のコマンドにバインドされていない限り、事実上 undefined-key にバインドされます。
spell-line (M-$)
spell-word のように入力バッファー内の 各ワードのスペルを訂正しようとします。ただし、スイッチや置換子などの 問題を回避するために、先頭文字が '-'、'!'、'^'、または '%' であるワード、あるいは '¥'、'*'、または '?'を含んでいるワードは無視します。 スペル訂正機能を参照してください。
spell-word (M-s、M-S)
スペル訂正機能で説明されているように現行ワードのスペル を訂正しようとします。パス名と思われるワードの各コンポーネントを検査します。
toggle-literal-history (M-r、M-R)
入力バッファー内のヒストリー置換子を展開または展開解除します。 expand-history シェル変数およ び autoexpand シェル変数も参照してください。
undefined-key (バインドされていない任意のキー)
ビープ音を鳴らします。
up-history (上矢印、^P)
ヒストリー・リスト内の直前の項目を入力バッファーにコピーします。histlit が設定されている場合には、項目の リテラル形式を使用します。これを繰り返せば、ヒストリー・リスト内を上方へ進むことができ、最上部で停止します。
vi-search-back (?)
検索ストリング (history-search-backward の場 合と同様にグロブ・パターンでもかまいません) を入力するよう ? によって 促します。そしてそれを検索して入力バッファーにコピーします。 一致するものが見つからなければ、ベルが鳴ります。 Enter キーを押すと検索は終了し、最後に見つかった一致するも のが入力バッファーに残されます。 Esc キーを押すと検索は終了し、一致したものが実行されます。 vi モード専用です。
vi-search-fwd (/)
vi-search-back と似ていますが、下方に 向かって検索するという点で異なっています。
which-command (M-?)
入力バッファーの最初のワードに対して which (組み込み コマンド) を実行します。which は、置換やパス検索の後にシェルが実行するコマンドを 表示します。表示されたコマンドは、 ユーザーの実効 ID に基づいたセキュリティー製品によるアクセス検査をパスしています。

コマンド構文

tcsh シェルは、入力行をブランクやタブの位置でワードに分割します。特殊文字 '&'、'|'、';'、'<'、'>'、'('、および ')'、ならびに 二重文字 '&&'、'||'、'<<' および '>>' は、ホワイト・ス ペースで囲まれていてもいなくても必ず独立したワードになります。

tcsh シェルの入力が端末からではないときには、コメントを開始するのに 文字 '#' が用いられます。 それぞれの # および # が現れている入力行の残りの部分は、廃棄されてから構文解析が続行されます。

特殊文字 (ブランクやタブを含む) は、その前に円記号 (¥) を 付けるか、あるいは単一引用符 (')、二重引用符 (") または 開き引用符 (' ` ') で囲むことにより、特殊な意味を持たないようにすることが でき、また状況に応じて別のワードの一部とすることも可能です。 前に ¥ が付けられた改行は、これ以外の方法で引用されているので なければ、ブランクと等しくなりますが、引用符で囲まれると、このシーケンスは改行になります。

また、ヒストリー置換子以外の置換子 (置換を参照) は すべて次の方法で抑制することができます。すなわち、置換子が含まれている ストリング (またはストリングの一部) を単一引用符で囲むか、重要文字 (例えば、変数 置換またはコマンド置換についてはそれぞれ '$' または '`') を ¥ を使って引用するという 方法です。(別名置換も例外ではありません。別名として定義されているワードの 任意の文字を何らかの方法で引用するなら、別名の置換が抑制されます。 別名を引用する場合、通常は別名の前に円記号を付けます。)ヒストリー置換は、単一引用符ではなく、円記号を使って抑制します。ストリングを二重引用符または開き引用符で囲んでも変数置換やコマンド 置換は行われますが、その他の置換は抑制されます。

テキストを単一引用符または二重引用符で囲むと、単一ワード (または単一 ワードの一部) になります。そのストリングの中のメタキャラクター (ブランクやタブを含む) は 独立したワードとはなりません。 ある特別な場合だけは、二重引用符で囲まれたストリングが複数のワードと見なされることがありますが (コマンド置換)を参照)、単一引用符で囲 まれたストリングの場合にはそのようなことはありません。開き引用符は特殊なものであり、コマンド置換のシグナルを送ります。その結果、複数のワードになる場合があります。

複雑なストリング、特に引用に用いられる文字を含んでいるストリングの場合には、混乱を引き起こす可能性があります。引用符は、人が文章を書く場合のように用いる必要はないことを覚え ておいてください。ストリング全体を引用するのではなく、ストリングの中の引用する必要のある 一部だけを、状況に応じて種々の引用方法で引用するほうが簡単です。

backslash_quote シェル変数を設定すれば、円記号が常に ¥、'、およ び " を引用するように指定できます。 このようにすると複雑な引用を簡単にすることができますが、csh (または tcsh) スクリプトでは構文エラーが発生する可能性があります。

置換

ここでは、入力で tcsh シェルが実行する種々の変換を、その示されている 順序に従って説明します。また、関係しているデータ構造、ならびにコマ ンドとコマンドに影響する変数を取り扱います。 置換は、コマンド構文で説明されているように引用によって抑制することができます。

ヒストリー置換

端末から入力されるそれぞれのコマンド (またはイベント) はヒストリー・リストに保管されます。 直前に入力されたコマンドは必ず保管されます。また history シェル変数を使用すれば、保管するコマン ドの数を設定することができます。 histdup シェル変数を使用すれば、重複するイベ ントや連続して重複するイベントを保管しないよう設定することができます。

保管されるコマンドには、1 から順番に番号が付けられ、またタイム・ スタンプも付けられます。イベント番号を使用しなければならないとは限りませんが、prompt シェル変数に感嘆符 (!) を 入れることにより、現行のイベント番号をプロンプトの一部にすることが できます。

シェルは、実際に展開形式およびリテラル (非展開) 形式でヒストリーを 保管します。histlit シェル変数を設定すると、ヒストリーを表示お よび保管するコマンドはリテラル形式を使用します。

history 組み込みコマンドは、ヒストリー・リストの出力、ファイルへの保管、復元および消去を、いつでも行うことができます。savehist シェル変数および histfile シェル変数を使えば、ログアウト時にヒストリー・リストが自動的に 保管されたり、ログオン時にヒストリー・リストが復元されるように設定 することができます。

ヒストリー置換により、ワードがヒストリー・リストから入力ストリームに取り込まれます。そのため、コマンドを繰り返したり、現行コマンドで直前のコマンドの引数を 繰り返したり、あるいは直前のコマンドでのスペルの間違いを修正したりするこ とが容易になり、ほとんど入力しなくても高いレベルの信頼性でそれらが行われる ようになります。

ヒストリー置換子は ! の文字で開始されます。 ヒストリー置換子は入力ストリーム内のどの 位置でも開始できますが、ネストはされません。 ! の前に ¥ を付けてその文字自体の特別の意味がないようにする ことができます。便宜上、 ! の後にブランク、タブ、改行、= または ( が 続いている場合には、! は未変更のまま渡されます。入力行が ^ で始まっている場合にもヒストリー置換が行われます。ヒストリー置換のシグナルを送るのに用いられる文字 (! および ^ (キャレット)) は、histchars シェ ル変数を設定することにより変更することができます。ヒストリー置換子を含んでいる入力行は、実行され る前に出力されます。

ヒストリー置換子は、イベント指定 (ワードの取り出し元に なるイベントを示すもの)、ワード指定子 (選択され たイベントから特定のワードを選択するもの)、および 修飾子 (選択されたワードを操作するもの)、あるい はそれらすべてを含んでいる場合があります。

イベント指定には次のものがあります。
n
特定のイベントを指す番号。
–n
現行イベントの前のイベント n を指すオフ セット。
#
現行イベント。これは csf では注意して使用してください。csf ではリカージョンの検査が行われません。 tcsh では 10 レベルのリカージョンが可能です。
!
直前のイベント (-1 と同じです)。
s
最初のワードがストリング s で始まっている 最新のイベント。
?s?
ストリング s を含んでいる最新のイベント。2 番目の ? は、そのすぐ後に改行が続いている場合には省略できます。
例えば、ある人の次のようなヒストリー・リストの一部を考慮してみてください。
9 8:30 nroff -man wumpus.man
10 8:31 cp wumpus.man wumpus.man old
11 8:36 vi wumpus.man
12 8:37 diff wumpus.man.old wumpus.man
コマンドにはイベント番号とタイム・スタンプが付けられています。まだ入力していない現行イベントは、イベント 13 です。 !11 と !-2 はイベント 11 を表します。!! は直前のイベント 12 を表しま す。!! は、後に : (コロン) が続いている場合には省略して ! で表すことができます。!n は、n で始まるイベント 9 を表します。!?old? は、 old を含んでいるイベント 12 を表し ます。ワード指定子も変更子もなければ、ヒストリー参照は単純にイベント全体に展開さ れるので、コピー・コマンドを再実行するには !cp を入力し、diff 出力が画面の上部からはみでた場合には !!|more を入力します。

ヒストリー参照は、必要に応じて周囲のテキストから中括弧で孤立させることが できます。 例えば、!vdoc は vdoc で始まっているコマン ドを見つけようとしますが、この例ではそれはありません。しかし、!{v}doc は明示的に vi wumpus.mandoc に展開されます。 中括弧に囲まれていても、ヒストリー置換子はネストされません。

csh は、例えば !3d を文字 d の付いているイベント 3 に展開しますが、tcsh はそれを 3d で始まっている最後のイベントに展開します。つまり、完全に数値だけの引数しかイベント番号として扱いません。 これによって、番号で始まっているイベントを再呼び出しすることが可能に なります。!3d を csh の場合のように展開するには、!¥3d としてください。

あるイベントからワードを選択するには、イベント指定の 後に : (コロン) と選択するワードの指定子を付けることができます。入力行のワードには 0 から順に番号が付けられ、最初の (通常はコマンド) ワードが 0、2 番目のワード (最初の引数) が 1 という具合になります。基本的なワード指定子は以下のとおりです。
0
最初のコマンド・ワード。
n
n 番目の引数。
^
最初の引数 (1 と同じです)。
$
最後の引数。
%
?s? search
x-y
ワードの範囲。
–y
0–y と同じです。
*
^–$ と同じですが、イベントが 1 個のワードしか含んでいない 場合には何も戻しません。
x*
x-$ と同じです。
x-
x* と同じですが、最後のワード ($) を省 略します。
選択されたワードは、単一ブランクで区切られてコマンド行に挿入されます。 例えば、すぐ上の例の diff コマンドは、cp コマンドの引数を選択して交換するために、diff !!:1.old !!:1 (直前のイベントから最初の 引数を選択するために :1 を使用) また は diff !-2:2 !-2:1 と入力できたかもしれません。 diff の順序を気にしないのであれば、diff !-2:1-2 または単純に diff !-2:* とすることができたかもしれません。 cp コマンドは、現行イベントを表すために # を使用して、cp wumpus.man !#:1.old とすることができたかもしれま せん。!n:- hurkle.man では、nroff -man hurkle.man の 意味を伝えるために、nroff コマンドの最初の 2 個のワードを 再利用することになります。

イベント指定とワード指定子を区切っている : は、引数セレクタ ーが '^'、'$'、'*'、'%' または '-' で始まっている場合には省略す ることができます。例えば、上記の diff コマンド は diff !!^.old !!^ また はそれと同じ意味の diff !!$.old !!$ とすることができ たかもしれません。 しかし、!! を ! のように省略すると、- (ハイフン) で始まっている 引数セレクターはイベント指定として解釈されてしまいます。

ヒストリー参照はワード指定子を持つことができますが、イベント指定はなくてもかまいません。その場合、ヒストリー参照は直前のコマンドを参照します。 上記の diff の例を引き続き用いるなら、このコマンドは簡単に diff !^.old !^ と することができます。あるいは引数を逆の順序で得るため には単に diff !* と入力することができます。

ヒストリー参照内のワード (1 つまたは複数) は、ワードの後に 1 つまたは複数の変更子 (それぞれの前に : (コロン) を付ける) を続けることによって編集または変更することができます。
h
末尾のパス名コンポーネントを除去し、先頭部分を残します。
t
先行するすべてのパス名コンポーネントを除去し、末尾のものだけを残します。
r
ファイル名拡張子 .xxx を除去し、ルート名を残します。
e
拡張子以外のものをすべて除去します。
u
最初の小文字を大文字に変換します。
l
最初の大文字を小文字に変換します。
s/l/r
rl に置き 換えます。lr と同様の単なるストリングであり、名前の一部が類似する ed コ マンドの場合のような正規表現ではありません。 / の代わりに任意の文字を区切り文字として使用できます。¥ は、l および r の 内部の区切り文字を引用するのに使用できます。r 内の文字 & は l で置き換えられ、¥ は & も引用します。 l が空 ('''') の場合、直前の置換から の l または直前 の ?s? イベント指定からの s が使用されます。 末尾の区切り文字の直後に改行が続いている場合には、末尾の区切り文字を 省略することができます。
&
直前の置換を繰り返します。
g
続く変更子を各ワードに 1 回適用します。
a
続く変更子を、単一のワードにできるだけ何度も適用します。'a' と 'g' を併用すると、変更子をグローバルに適用できます。 現行の実装では、'a' 変更子と 's' 変更子を一緒に使用すると無限ル ープに入る可能性があります。例えば、:as/f/ff/ は終了しません。この動作は将来変更されるでしょう。
p
新しいコマンド行を出力しますが、実行はしません。
q
置換された文字を引用符で囲み、この後に置換が行われないようにし ます。
x
q と似ていますが、ブランク、タブおよび 改行の位置でワードに分割します。
変更子は、最初の変更可能なワードにのみ適用されます ('g' が使用されて いない場合)。変更可能なワードがなければエラーになります。

例えば、diff コマンドは、同じ行の最初の引数 (!#^) か ら .old を除去するのに :r を使用して、diff wumpus.man.old !#^:r のようにすることが できたかもしれません。echo hello out there のような コマンドについて考えた場合、'hello' を大文字にする には echo !*:u、大声のスタイルにする には echo !*:au、また実際に叫び声をあげるようなスタイルにする には echo !*:agu となります。 mail -s "I forgot my password" rot の 後に !:s/rot/root を続ければ、'root' のスペルが訂正され ます (別の方法については、スペル訂正機能を参照してください)。

置換子用の特殊な省略形があります。^ は、これが入力行の先頭文字で ある場合には、!:s^ と等しくなります。 このため、上の例のスペル訂正を行う には ^rot^root のようにすることができます 。 明示的に ! で始まらないヒストリー置換子はこれしかありません。

csh だけでは、それぞれのヒストリーまたは変数展開に適用できる変更子 は 1 つだけです。しかし tcsh では、複数の変更子を適用できます。以下に例を示します。
% mv wumpus.man /usr/man/man1/wumpus.1
% man !$:t:r
man wumpus
csh では、結果は wumpus.1:r になります。 コロンが後に続く置換子は、中括弧でコロンとは分離しなければならない場合 があります。
> mv a.out /usr/games/wumpus
> setenv PATH !$:h:$PATH
Bad ! modifier: $.
> setenv PATH !{-2$:h}:$PATH
setenv PATH /usr/games:/bin:/usr/bin:.
最初の試みは csh では成功するはずですが、tcsh では失敗します。tcsh は、2 番目のコロンの後に $ ではなく別の変更子を予期するためです。
最終的に、 ヒストリーには、エディターを使用しても、前述の置換を使用してもアクセスできます。 以下のコマンドは、ヒストリー・リスト内のイベントを検索し、イベントをまとめて入力 バッファーに取り込みます。
  • up-history
  • ヒストリーの下方移動
  • history-search-backward
  • history-search-forward
  • i-search-back
  • i-search-fwd
  • vi-search-back
  • vi-search-fwd
  • copy-prev-word
  • insert-last-word
toggle-literal-history エディター・コマンド は、入力バッファー内でのヒストリー行の展開形式とリテラル形式との間 の切り替えを行います。 expand-history およ び expand-line は、それぞれ現行ワード内および 入力バッファー内のヒストリー置換子を展開します。

別名置換

シェルは、alias および unalias コマンドで設定、設定解除、および出力することができる別名のリストを保守します。 コマンド行が解析されて単純なコマンドに分割された 後 (コマンド実行を参照)、各コマンドの最初のワードが別名 を持っているかどうか、左から右の順に検査されます。 持っている場合には、最初のワードは別名に置換されます。 別名がヒストリー参照を含んでいる場合には、元のコマンドが直前の入力行にある かのようにヒストリー置換が行われます。 別名がヒストリー参照を含んでいない場合には、引数リストには手が加えられま せん。

したがって、ls の別名が ls -l である場合、コマン ド ls /usrls -l /usr となり、引数リストはここではそのままになっています。 lookup の別名が grep !^ /etc/passwd である場合には、lookup billgrep bill /etc/passwd となります。 別名は、パーサーのメタ構文をインストールするのに使用できます。 例えば、alias print 'pr ¥!* | lpr' は、引数をライン・プリンターに出力する コマンド (print) を定義します。

別名置換は、その最初のワードが別名を持っていないコマンドを検出するまで 繰り返されます。 別名置換が (すぐ上の例のように) 最初のワードを変更しないような場合、ループを回避するためにフラグが付けられます。 その他のループが起きた場合には検出されて、エラーが発生します。

一部の別名はシェルが参照します。tcsh 組み込みコマンドを参照してくだ さい。

変数置換

tcsh シェルは、変数のリストを保守します。それぞれの変数は、値とし て 0 個以上のワードから成るリストを持っています。 tcsh シェル変数の値は、set および unset コマ ンドを使って表示したり、変更したりできます。 システムは独自の「環境」変数リストを保守しています。 それらの変数リストは、printenvsetenv およ び unsetenv を使って表示したり、変更したりできます。

変数は set -r を使って読み取り専用にすることができます。 読み取り専用変数は、変更したり、設定解除したりすることができませ ん。もしそうしようとすると、エラーが起こります。 変数をいったん読み取り専用にすると、書き込み可能にすることができなく なります。ですから set -r は注意して使用する必要があります。 環境変数は読み取り専用にすることはできません。

一部の変数は、tcsh シェルが設定したり、参照したりします。 例えば、argv 変数はシェルの引数リストの イメージであり、この変数の値のワードは特別な仕方で参照されます。tcsh シェルが参照する変数のいくつかはトグルですが、シェルは トグルが設定されているかどうかを見るだけであり、どんな値であるかにつ いては注意しません。例えば、verbose 変数は、コマンド入力がエコーされ るようにするトグルです。 -v コマンド行オプションがこの変数を設定します。特殊なシェル変数は、シェルが参照するすべての変数をリストします。

その他の操作では、変数を数値的に処理します。 @ (at) コマンドを使用すると、数値計算を実行でき、また その結果を変数に割り当てることができます。 しかし、変数の値は常に (0 個以上の) ストリングとして表現されます。 数値的な操作を行うという目的のため、ヌル・ストリングはゼロと みなされ、複数ワードからなる値の 2 番目以降のワードは無視されます。

入力行に別名が割り当てられて解析された後、各コマンドの実行に先立って、$ 文字で入力された変数置換が実行されます。この展開は $ の前に ¥ を付 けることによって抑制することができますが、次のような例外があります。すなわち、二重引用符 (") で囲まれている場合には展開は常に行われ、単一引用符 ( ' ) で囲まれている場合には展開は絶対に行われません。開き引用符または抑音符号 (`) を使って引用されたストリングは、後で 解釈されます (コマンド置換を参照)。このため、$ の置換は 行われるとしても、後でなければそこでは行われません。 ブランク、タブ、または行の終わりが後に続いている場合には、$ は未変更のまま渡されます。

入出力のリダイレクトは変数展開の前に認識され、そして別個に展開 されます。それ以外の場合、コマンド名と引数リスト全体は一緒 に展開されます。 ですから、(ここまでの) 最初の (コマンド) ワードは複数のワードを生成することが 可能であり、その最初のワードがコマンド名になり、残りのワードが引数になります。

二重引用符 (") で囲まれていないか、あるいは :q 変更子が与えられて いない限り、変数置換の結果は最終的には置換されたコマンドとファ イル名になります。" で囲まれている場合、複数のワードからなる値を持つ変数は、単一 ワード (の一部) に展開され、変数の値のワードはブランクで区切られます。:q 変更子が置換に適用された場合、変数は複数のワードに展開されますが、それぞれのワードはブランクで区切られ、後でコマンドまたはファイル名置換が行われないように引用符で囲まれます。

変数の値をシェル入力に取り込むために、以下のようなメタシーケンスが用 意されています。ただし、上に述べたように、設定されていない変数を 参照するとエラーになります。
$name[selector]
${name[selector]}
名前 (name) の値から選択したワードだけに置き換えます。 セレクター (selector) は $ 置換の対象となり、これは 1 個の番号、またはハイフン (-) で区切られた 2 個の番号からなっています。 変数の値の最初のワードには番号 1 が付けられます。範囲の最初の番号 を省略すると、それは 1 として解釈されます。範囲の最後の番号 を省略すると、それは $#name として解釈されます。セレクター * はすべてのワードを選択します。 2 番目の引数が省略されるかまたは範囲内にある場合に、範囲が空であってもエラーにはなりません。
$0
コマンド入力の読み取り元になるファイルの名前に置き換えます。名前が認識されていない場合には、エラーが起こります。
$number
${number}
$argv[number] と同等です。
$*
$argv と同等であり、$argv[*] とも同等です。
ヒストリー置換で説明した : (コロン) 修飾子は、:p を除いて、変数置換に適用することができます。複数の変更子を使用できます。ヒストリー置換の場合と同様に、変数置換子を文字どおりの : と分離するた めに中括弧を付けなければならない場合があります。変更子はすべて中括弧の 中に指定しなければなりません。 以下の置換子は : 変更子で変更することはできません。
$?name
${?name}
name が設定されている場合はストリング 1 に置き換え、設定されていない場合は 0 に置き換えます。
$0
コマンド入力の読み取り元になるファイルの名前に置き換えます。名前が認識されていない場合には、エラーが起こります。
$?0
現行の入力ファイル名が認識されている場合には 1 に 置き換え、認識されていない場合には 0 に置き換えます。 対話式シェルでは常に 0 です。
$#name または ${#name}
name 内のワードの数に置き換えます。
$#
'$#argv' と同等です。
$%name
${%name}
name 内の文字の数に置き換えます。
$%number
${%number}
$argv[number] 内の文字の数に置き換えます。
$?
$status と同等です。
$$
(親) シェルの (10 進) プロセス番号に置き換えます。
$!
このシェルが開始した最後のバックグラウンド・プロセス の (10 進) プロセス番号に置き換えます。
$<
標準入力からの行に置き換え、これ以降は変換処理を行いません。これは、シェル・スクリプトでキーボードから読み取る場合に使用できます。csh では、$<:q と同等であるかのように常に引用符 $< を使用しますが、tcsh ではそのようにしません。さらに、tcsh が行の入力を待っているときに、ユーザーは行が代わりに入れ られるシーケンスを中断するために割り込みを入力することができますが、csh ではこうしたことを行えません。
エディター・コマンド expand-variables (通常は、^X-$ にバインドされている) を使用すれば、個々の変数を 対話式に展開することができます。

これまでに述べた置換以外の置換は、tcsh 組み込みコマンドの引数に選択 的に適用されます。つまり、式において評価されない部分については展開は行われません。 tcsh シェルの内部コマンドではないコマンドについては、コマンド名は別個に引数リストから置換が行われます。 これは、入出力リダイレクトが行われた後、メイン・シェルの子で 非常に遅く行われます。

コマンド置換

コマンド置換はコマンドを ' ' ' で囲んで示します。 そのようなコマンドからの出力は、ブランク、タブおよび改行の位置で個々 のワードに分割され、ヌル・ワードは廃棄されます。 その出力は、変数および置換されたコマンドであり、元のストリングの代わりに 挿入されます。

二重引用符 ( " ) の中のコマンド置換子はブランクとタブを保存しますが、改行だけは新しいワードを強制的に生成します。 最後の単一の改行は、どんな場合にも新しいワードを生成しません。 ですから、コマンド出力が完全な行であっても、コマンド置換によって ワードの一部しか生成されないことがあり得ます。

ファイル名の置換

あるワードが、'*'、'?'、'[' または '{' のいずれかの文字を含んで いるか、あるいは文字 '~' で始まっている場合、それはファイル名の 置換候補となります。これはワイルドカードとも 呼ばれています。そのワードはパターン (グロブ・パターン) と見なされ、そのパターンと一致するファイル名の英字順ソート・リストに置き換えられます。

ファイル名のマッチングの際に、 文字 . (ピリオド) は、文字/と同様に明示的に一致する必要があります。文字 * は、ヌル・ストリングを含め、どのストリング とも一致します。文字 ? はすべての単一の文字に一致します シーケンス […] は囲まれた文字のうちの任意のものと一 致します。[…] 内の - で区切られた文字の対は、その 2 つの文字の間にある任意の文字と語句として一致します。

一部のグロブ・パターンは否定できます。 すなわち、シーケンス [^…] は、中括弧内の文字や文字範囲によって指定されていない任意の単一文字と一致します。

グロブ・パターン全体も ^ で否定することができます。
> echo *
bang crash crunch ouch
> echo ^cr*
bang ouch
'?'、'*' または '[]' のいずれも使用していないグロブ・パターン、あるいは '{}' または '^' を使用しているグロブ・パターンは正し く否定されません。

メタ表記 a{b,c,d}e は abe ace ade の省略表現です。左から右への順序は保持されます。 つまり、/usr/source/s1/{oldls,ls}.c/usr/source/s1/oldls.c /usr/source/s1/ls.c に 展開されます。 マッチングの結果は、以下の例に示すように、この順序を維持して下位のレ ベルで別個にソートされます : ../{memo,*box}../memo ../box ../mbox に展開されます。 ('memo' は '*box' のマッチングの結果と一緒にはソートされないことに注意 してください。) 存在しないファイルにこの構造が展開されてもエラーにはなりませんが、展開されたリストが渡されるコマンドからはエラーが出される可能性があります。この構造はネストすることができます。 特別な場合として、ワード {, } および {} はそのまま渡されます。ファイル名の先頭にある ~ はホーム・ディレクトリーを表します。~ が単独で指定された場合、これはホーム・シェル変数の値に示されている起動側のホーム・ディレクトリーに展開されます。文字、数字、および - (ハイフン) で構成される名前が後に続いている場合、シェルはその名前を持つユーザーを検索し、そのホーム・ディレクトリーに置き換えます。ですから ~ken は、/usr/ken に展開され、 ~ken/chmach/usr/ken/chmach のように 展開されます。文字 ~ は、その後に英字以外の文字や / が続いている場合、あるいはワードの先頭以外の場所に現れている場合、そのまま残されます。 ですから、setenv MANPATH /usr/man:/usr/local/man: ~/lib/man のようなコマンドでは、ホーム・ディレクトリーには 置換されないことに注意してください。 '*'、'?'、'[' または '~'を含んでいるグロブ・パターンは、'^' があってもなくても、いずれのファイルとも一致しなければ エラーになります。しかし、グロブ・パターンのリスト内の 1 つのパターン だけはあるファイルと一致するはずです (ですから、例えば rm *.a *.c *.o が 失敗するのは '.a'、'.c'、または '.o' で終わっている現行ディレク トリー内にファイルが何もない場合だけです)。また、nonomatch シェル変数 が設定されていると、どれとも一致しないパターン (またはパターンのリス ト) は、エラーにならずに未変更のまま残されます。

noglob シェル変数を設定すると、ファイル名置換を 抑制することができます。また expand-glob エデ ィター・コマンド (通常は ^X-* にバインドされている) を使用する と、個々のファイル名置換を対話式に展開することができます。

ディレクトリー・スタック置換

ディレクトリー・スタックは、ゼロから始まる番号が付けられた ディレクトリーのリストであり、tcsh の pushdpopd およ び dirs 組み込みコマンドが使用するものです。dirs は、ディレクトリー・スタックの出力、ファイルへの保管、復元、および消去を、いつでも行うことができます。また savedirs および dirsfile シェル変数を設定すれば、ログアウト時にディレクトリー・ スタックが自動的に保管されたり、ログオン時にそれが復元されるように することができます。 dirstack シェル変数を調べればディレクトリー ・スタックを見ることができ、またこのシェル変数を設定すれば任意のディ レクトリーをディレクトリー・スタックに入れることができます。

1 個以上の数字が後に続いている = (等号) は、ディレクトリー・スタック 内の項目に展開されます。 特殊文字 =- はスタック内の最後のディレクトリ ーに展開されます。例えば、以下のとおりです。
    > dirs -v
    0 /usr/bin
    1 /usr/spool/uucp
    2 /usr/accts/sys
    > echo =1
    /usr/spool/uucp
    > echo =0/calendar
    /usr/bin/calendar
    > echo =-
    /usr/accts/sys
noglob および nonomatch シェル変数と expand-glob エディター・コマ ンドは、ファイル名置換だけでなくディレクトリー・スタックにも適用 されます。

その他の置換

ファイル名に関係した変換がほかにもいくつかあります。それらは ディレクトリー・スタック置換 に厳密に関係しているわけではありませんが、完全を期するために、ここで述べておきます。 symlinks 変数が expand に設定されていれば、どんなファイル名でも絶対パスに展開できます。 引用符で囲むとこの展開が抑制され、要求があると、normalize-path エディター・ コマンドは展開を行います。normalize-command エディター・コマンドは、要求があると PATH 内のコマンドを絶対パスに展開します。 最後の点として、cd および pushd は - (ハイフン) を 古い作業ディレクトリーとして解釈します (owd シェル変数と同等です)。 これは置換というわけではなく、これらのコマンドだけが認識する省略形 です。それでも、引用符で囲むとこれも抑制することができます。

コマンド実行

続く 3 つのトピックでは、シェルがコマンドを実行する方法を説明し、その入出力について扱います。

組み込みおよび非組み込みコマンドの実行

tcsh の組み込みコマンドは、シェル内で実行されます。 パイプラインの最後のコンポーネント以外のいずれかのコンポーネントが組み込みコマン ドである場合、そのパイプラインはサブシェル内で実行されます。

括弧で囲まれたコマンドは常にサブシェル内で実行されます。例えば、コマンド
(cd; pwd); pwd
は、ホーム・ディレクトリーを出力し、ユーザーは自分のい た場所にそのまま残されます (ホーム・ディレクトリーの後この ディレクトリーを出力します)。一方、
cd; pwd
は、ユーザーをホーム・ディレクトリーに残します。 括弧付きのコマンドは、cd が現行シェルに影響を与えないように するために非常に頻繁に使用されます。

実行するコマンドが組み込みコマンドでないことが分かると、tcsh シェルは execve によってそのコマンドを実行 しようとします。可変パス内の各ワードは、tcsh シェルがコマンドを探すディレクトリー を指定します。-c オプションも -t オプション も指定されていなければ、シェルはそれらのディレクトリー内の名前を 内部テーブルにハッシュし、シェルはコマンドがそこにある可能性 がある場合、ディレクトリー内の execve を 試みようとするだけです。 検索パス内に非常に多くのディレクトリーがある場合には、これによりコマ ンドを探し出すスピードが大幅に速くなります。このメカニズムが (unhash によって) オフにされている場合、あ るいはシェルに -c または -t 引数が与えられなか った場合、あるいは / で始まっていないパスの各ディレクトリー・ コンポーネントについては、シェルは現行作業ディレクトリー を、与えられたコマンド名に連結してファイルのパス名を作り、それを実行しようとします。

ファイルが実行許可を持っていても、システムに対して実行可能なファイル ではない場合 (すなわち、それが実行可能なバイナリーでも、そのインタ ープリターを指定しているスクリプトでもない場合)、それは、シェル・コマンドを含んでいるファイルであると想定され、それを 読み取るために新しいシェルが spawn されます。 shell 特殊別名を設定して、シェルそのもの以外の インタープリターを指定することもできます。

入力または出力

コマンドの標準入力および標準出力は、 表 1 に示されている以下の構文でリダイレクトすることができます。

表 1. tcsh シェルの標準入出力構文
構文 説明
< name 標準入力であるファイルの名前 (展開された最初の変数、コマンドおよび ファイル名) を開きます。
<< word word と同じ行までのシェル入力を読み取ります。 word は、変数置換、ファイル名置換またはコマンド置換の対象とはさ れず、それぞれの入力行はこの入力行で置換が行われる 前に word と比較されます。引用記号 ¥、" 、' ' または ' ' ' が word 内に含まれてい るのでない限り、間にある行で変数およびコマンド置換が実行され、¥ で $、¥ および ' (単一引用符) を引用する ことができます。置換されるコマンドでは、最後の改行を除くすべてのブランク、タブ、および改行が維持され、最後の改行だけは除去されます。 結果として得られるテキストは無名ファイルに入れられ、そのファイルは 標準入力としてコマンドに渡されます。

> name
>! name>
& name
>&! name

ファイル name が標準出力として使用されます。 そのファイルが存在しない場合には、それは作成されます。そのファイルが 存在する場合には、それは上書きされて以前の内容は失われてしまいます。

シェル変数 noclobber が設定されていると、そのファイルは存在できないかまたはキャラクター・スペシャル・ファイ ル (例えば、端末かまたは /dev/null) でなけれ ばなりません。そうでないとエラーになります。 この設定は、誤ってファイルが破壊されるのを防ぐのに役立ちます。この場合、! 形式を使用してこの検査を抑制することができます。

& (アンパーサンド) を含んでいる形式は、診断出力を、標準出 力だけでなく指定のファイルにも送ります。 name は、< 入力ファイル名の場合と同じように展開されます。

>> name
>>& name>>
! name>
>&! name

> と似ていますが、出力を name の最後に付加するという点で異な ります。シェル変数 noclobber が設定されていると、ファイルが存在しないなら エラーになります。ただし、! 形式の場合にはエラーになりません。

コマンドは、シェルが起動された環境を受け取りますが、その環境は 入出力パラメーターにより、またパイプラインに含まれていたその コマンドにより変更されたものです。ですから、以前の一部のシェルとは異なり、シェル・コマンドのファイルか ら実行されるコマンドは、デフォルトではコマンドのテキストを使用できませ ん。コマンドはシェルの元の標準入力を受け取ります。 インライン・データを提供するには << メカニズムを使用して ください。これを使用すると、シェル・コマンド・スクリプトはパイプライ ンのコンポーネントとして機能できるようになり、シェルは入力のブロック 読み取りを行うことができます。切り離して実行されるコマンドのデフォルト標準入力は、空ファイル /dev/null ではなく、シェルの元の標準入力です。その標準入力が端末であり、プロセスがその端末から読み取ろうとする 場合、プロセスはデータをブロック形式で記録し、そのことがユーザーに通知 されます (ジョブを参照)。

診断出力は、標準出力と一緒にパイプを介して送ることができます。単なる | ではなく、|& 形式を使用するだけで行うことができます。

現在のところ、シェルは標準出力もリダイレクトしなければ、診断出力をリ ダイレクトすることはできません。しかし、(command > output-file) >& error-file はしばしばその抜け道として 受け入れられています。出力を端末に送るには、output-file または error-file のいずれか を /dev/tty にすることができます。

機能

シェルがどのようにコマンド行を受け入れて、解析し、実行するかにつ いて説明してきましたが、次に種々の便利な機能に目を向けてみましょう。

制御流れ

tcsh シェルは、コマンド・ファイル (シェル・スクリプト) 内の、また端末 出力からの (役立つ仕方で制限された) 制御の流れを調整するのに 使用できるいくつかのコマンドを含んでいます。 それらのコマンドはすべて、シェルに強制的にその入力の中で再読み取り またはスキップさせたり、実装のために一部のコマンドの配置を制限 させることにより、動作します。

foreach ステートメント、switch ステートメント、および while ステートメント、ならびに if ステートメント の if-then-else ステートメントでは、入力行の単一の単純コマンドの中に主要なキーワ ードを指定する必要があります。

シェルの入力が検出できない場合、シェルはループが読み取られるときには いつでも入力をバッファーに入れ、この内部バッファー内で検出を実行して、ループが示唆する再読み取りを実行します。 (これが可能な範囲内では、逆方向 goto は検出不能入力に対して成功しま す。)

ifwhile、および exit の各組み込み コマンドは共通構文を持つ式を使用します。 この式には、続く 3 つのトピックで説明しているどの演算子でも含め ることができます。 @ 組み込みコマンドは独自の別個の構文を持っていることに注意 してください。

論理演算子、算術演算子、および比較演算子

以下の演算子は C の演算子と似ており、同じ優先順位を有しています。次のようなものがあります。
|| && | ^ & == !=  =~  !~  <=  >=
< > << >>  + - * / % ! ~ (  )
ここで優先順位は右に行くほど高くなります。 '==' '!=' '=~' および '!~' '<=' '>=' '<' および '>' '<<' および '>>' '+' および '-' '*' / および '%' は同じレベルのグループです。'==' '!=' '=~' および '!~' 演算子はそれぞれの引数をストリング として比較し、その他の演算子は数字に対して演算を行います。 演算子 '=~' および '!~' は '!=' および '==' と似てい ますが、右側がグロブ・パターン (ファイル名の置換を参照) であり、左側のオペランドがそれとマッチングさせられるという点で違っています。 実際に必要なことがパターン・マッチングだけである場合には、これにより、シェル・スクリプトの中で switch 組み込みコ マンドを使用する必要性が少なくなります。

0 で始まるストリングは 8 進数と見なされます。 ヌルの場合または引数がない場合は 0 と見なされます。すべての式の結果はストリングで、これは 10 進数を表します。同じワードの中に 式の 2 つのコンポーネントがあってはなりません。 ただし、それらのコンポーネントが、パーサーにとって構文上重要となる式のコンポーネント ('$' '|' '<' '>' '(' ')') に隣接している場合を除きます。 その場合は、それらのコンポーネントをスペースで囲む必要があります。

コマンド出口状況

コマンドは中括弧 ({}) で囲めば式の中で実行することができ、それらの出口状況が戻されます。中括弧は、コマンドのワードとスペースで分離する必要があります。 コマンドが状況 0 で終了した場合には、コマンドの実行は正常 に行われ、真 (すなわち 1) が戻され、それ以外の状況である 場合にはコマンドの実行は失敗し、偽 (0) が戻されます。もっと詳しい状況情報が必要な場合には、コマンドを式の外側で実行し、status シェル変数を調べる必要があります。

ファイル照会演算子

これらの演算子の一部は、ファイルおよび関連オブジェクトに対して 真/偽テストを実行します。それらは -op file 形式であり、ここで op は次のいず れかです。
ac
タイプ c の拡張 ACL が存在しています。文字 c は、ACL のタイプを表します。
a
アクセス ACL
d
ディレクトリーのデフォルト ACL
f
ファイルのデフォルト ACL
サブオプション d および f によるテストは、ファイルについては常に偽を戻します (ファイルにはデフォルトの ACL がありません)。
r
読み取りアクセス (セキュリティー製品および実効 ID によって決定される)
w
書き込みアクセス (セキュリティー製品および実効 ID によって決定される)
x
実行アクセス (セキュリティー製品および実効 ID によって決定される)
X
パス内の実行可能ファイルまたはシェル組み込みコマンド。例えば、–X ls および –X ls-F は一般的には真ですが、–X /bin/ls は真では ありません。(これは、セキュリティー製品および実効 ID によって決定されます。)
e
存在
Ea
ファイルが APF 拡張属性を持っている
Ep
ファイルがプログラムを持っている
Es
ファイルが共用アドレス・スペース拡張属性を持っている
El
ファイルが共用ライブラリー拡張属性を持っている
o
所有権
x
ゼロのサイズ
s
非ゼロ・サイズ
f
プレーン・ファイル
d
ディレクトリー
l
シンボリック・リンク
b
ブロック・スペシャル・ファイル
c
キャラクター・スペシャル・ファイル
p
名前付きパイプ (FIFO)
S
ソケット・スペシャル・ファイル
u
セット・ユーザー ID ビットが設定されている
g
セット・グループ ID ビットが設定されている
k
スティッキー・ビットが設定されている
t
t file_descriptor (これは数字でなければ なりません) は端末デバイス用のオープン・ファイル・ディスクリプターです。
L
複数演算子テスト内の後続の演算子を、シンボリック・リンクに適 用します。そのリンクが指し示すファイルには適用しません。
file がコマンドおよびファイル名展開され、その後、実ユーザーとの 間に指定された関係をそれが持っているかどうかテストされます。 file が存在しないか、あるいはアクセス不能である場合、あるい は * で示された演算子については、指定されたファイル・タイプが現行 システムに存在しない場合、すべての照会は偽 (0) を戻します。

これらの演算子は簡単にするために組み合わせることができ、–xy file–x file && –y file と 同等です。例えば、–fx はプレーン実行可能ファイルについては真です (1 を戻します) が、 ディレクトリーについては真ではありません。

L は、複数演算子テストで使用して、後続の演算子をシンボリック・ リンク (リンクが指し示すファイルではなく) に適用することができます。例えば、-lLo は、 呼び出し側のユーザーが所有するリンクについては真です。LrLw、および Lx はリンクについては 常に真であり、リンク以外については偽です。L は、複数演算子テストの中の最後の演算子であるときには、別 の意味を持ちます。

file がファイルであることを予期する演算子を、そのように予期しない演算 子と組み合わせること (例えば、Xt) は可能ですが、実用的 ではありません。むしろ、場合によっては誤った結果にいたることがあります。L の後に非ファイル演算子を続けると、特に予想外の結果になることが あります。

その他の演算子は他の情報を戻します。すなわち、0 で も 1 でもありません。それらの形式は前のものと同じ であり、op は以下のいずれかです。
A
最後のファイルのアクセス時刻 (エポックから経過した秒数)
A:
A と似ていますが、タイム・スタンプ形式です。すなわち、'Fri May 14 16:36:10 1993' です。
M
最後のファイルの変更時刻
M:
M と似ていますが、タイム・スタンプ形式であるという点が異なっています。
C
最後の i ノード変更時刻
C:
C と似ていますが、タイム・スタンプ形式であるという点が異なっています。
D
デバイス番号
I
i ノード番号
F
複合ファイル ID (形式は device : inode)
L
シンボリック・リンクが指し示すファイルの名前
N
(ハード) リンクの数
P
先行ゼロなしの許可 (8 進数)
P:
P と似ていますが、先行ゼロが付きます
P mode
-P mode & file と同等です。すなわち、-P22 file は、file が group および other によって書き込み可能である 場合には 22 を戻し、group だけによって書き込み可能である 場合には 20 を戻し、いずれによっても書き込み可能で なければ 0 を戻します。
P mode:
P mode と似ていますが、先行ゼロが付きます。
U
数値ユーザー ID
U:
ユーザー名、またはユーザー名が不明の場合は数値ユーザー ID
G
数値グループ ID
G:
グループ名、または数値グループ ID (グループ名が不明の場合)
Z
サイズ (バイト数)
m file
存在する場合、ファイルのセキュリティー・ラベルを返します。ない場合は、偽を戻します。
複数演算子テストの中では上記の演算子のうちの 1 つしか指定することができず、それは最後に指定する必要があります。L は、複数演算子テストの中の最後およびいずれの場所でも、別の意味を持ちます。 上記の演算子の多くについて 0 が有効な戻り値なので、失敗し た場合にはそれらの演算子は 0 を戻しません。失敗した場合、ほとんど は -1 を戻し、F は : (コロン) を戻します。

ファイル照会演算子は、filetest 組み込みコマンドでも評価する ことができます。

ファイル・タグおよび Filetest 組み込みコマンドで使用するファイル照会演算子

–B file
  • そのファイルがバイナリーとしてタグ付けされている場合、真。
  • そのファイルがタグ付けされていない場合、あるいはテキストとしてタグ付けされている場合、偽。
  • そのファイルがテキスト/バイナリーの混在としてタグ付けされている場合 (すなわち 、txtflag = OFF でコード・セットがファイル・タグに格納されている)、コード・セットが戻される。
–T file
  • そのファイルがタグ付けされていない場合、あるいは txtflag = OFF としてタグ付けされている場合、偽。
  • そのファイルがテキストとしてタグ付けされている場合、コード・セットが戻される。
–B file または –T file のどちらを使用しても、そのファイルが指定したようにタグ付けされている場合、tcsh の「if テスト」により真と 評価されます。この 2 つの演算子を使用すると、tcsh では特定のコード・セットに対するテストも 行えるようになります。例えば、以下のとおりです。
if ( -T file == IBM-1047 )  #True if tagged as IBM-1047 text
if ( -B file )              #True if tagged as binary
注: ファイル問い合わせオペレーターが、テスト中のコード・セットの別名を戻すことがあるため、 相互の別名であるコード・セットが存在し、 そのためにテストが失敗する場合があります。

ジョブ

シェルはジョブを各パイプラインと関連付けます。 シェルは、現行ジョブのテーブル (jobs コマンドで出力される) を 保持し、ジョブに短整数番号を割り当てます。ジョブが & (アンパーサンド) によって非同期的に開始された場合、シェルは次のような行を出力します。
[1] 1234
これは、非同期的に開始されたジョブがジョブ番号 1 であり、1 つの (最上位) プロセスを持っていて、そのプロセス ID が 1234 であったことを示します。

あるジョブを実行していて、何かほかのことを実行したい場合には、延期キー (通常は ^Z) を押すことができます。それによって、STOP シグナルが現行ジョブに送られます。次にシェルは、通常、ジョブが「延期」されたことを示し、別のプロンプトを出力します。 listjobs シェル変数が設定されてい る場合、jobs 組み込みコマンドの場合のようにすべてのジョブが リストされます。その変数が 'long' に設定されている場合には、jobs -l の場合のようにリストは長形式になります。 その後、ユーザーは延期されたジョブの状態を操作することができます。 bg コマンドでジョブをバックグラウンドに移したり、ほかのいく つかのコマンドを実行してから最終的には fg でそのジョブをフォ アグラウンドに戻したりすることができます (run-fg-editor エディター・コマンドも参照)。^Z は即時に有効になります。これは、入力されると保留出力および 読み取られていない入力が廃棄されるという点で割り込みと似ています。 wait 組み込みコマンドを使用すると、シェルはすべてのバッ クグラウンド・ジョブが完了するのを待機することになります。

^] キーは遅延延期シグナルを現行ジョブに送りますが、このシグナル はプログラムがそれを読み取ろうとするまで STOP シグナルを生成しません。 通常、これは、あるジョブ用にいくつかのコマンドを準備したとき、前もっ て入力することができます。これは、そのジョブがコマンドを読み取った後 にそのジョブを停止したい場合に入力します。csh では ^Y キーがこの機能を実行しますが、tcsh では ^Y は 編集コマンドです。

バックグラウンドで実行されているジョブは、端末から読み取ろうとすると 停止してしまいます。バックグラウンド・ジョブは通常、出力を生成することができますが、これはコマンド stty tostop で使用不可にすることができます。 stty オプションを設定した場合、バックグラウンド・ジョブは、出力を 生成しようとすると停止してしまいます。これはジョブが入力を読み取ろうと した場合に停止するのと同様です。

シェル内でジョブを参照する方法はいくつかあります。 文字 % はジョブ名を取り込みます。 それでジョブ番号 1 を参照したい場合には、それを %1 のように指定 することができます。単にジョブを指定した場合、そのジョブはフォアグラウンド で実行されます。%1 は fg %1 の同義語であり、ジョブ 1 をフォアグラウンドに戻します。同様に、%1 & は bg %1 のようにバックグラウンドでジョブ 1 を再開します。 入力するストリングにあいまいな接頭部を指定してジョブを開始することもできます。例えば、%ex は中断状態の ex ジョブを再開します (ストリング 'ex' で始まる名前を持つ中断状態のジョブが 1 つしかない場合)。 %? ストリングを指定して、ストリングを含んでいるテキストを持つジョブを 指定することもできます (そのようなジョブが 1 つしかない場合)。

シェルは現行ジョブと直前のジョブを覚えています。 ジョブに関連した出力では、現行ジョブには + (正符号) のマークが付けられ、直前のジョブには - (ハイフン) のマークが付けられます。 省略形 %+、%、および (ヒストリー・メカニズムの構文との類推で) %% はす べて現行ジョブを示し、%- は直前のジョブを示します。

ジョブ制御機構では、一部のシステムにおいて stty のオプショ ン new を設定する必要があります。これは tty ドライバーの新しい (new) 実装の成果物であり、これを使用すると、キーボードから割り込み文字を生成してジョブに停止するよう命令することができます。 新しい tty ドライバーのオプションの設定についての詳細は、stty および setty tcsh 組み込みコマンドを参照してください。

状況報告書

tcsh シェルは、プロセスが状況を変更すると即時にそれを認知します。 通常、シェルは、ジョブが妨害されて、処理を進めることができなく なった場合にユーザーに知らせますが、それはプロンプトを出力するほんの 直前です。これは、ユーザーの作業が妨げられないようにするためです。 しかし、notify シェル変数を設定して おくと、シェルはバックグラウンド・ジョブの状況の変更を即時にユーザーに 通知します。 単一プロセスの状況変更が即時に報告されるようにそれにマークを付ける シェル・コマンド notify もあります。 デフォルトでは、notify は現行プロセスにマークを付けます。バックグラウンド・ジョブを開始した後に 'notify' と指定するだけで、それにマークを付けることができます。

ジョブが停止しているときにシェルを終了しようとすると、'You have stopped jobs' という警告が出されます。 jobs コマンドを使用すれば、それらのジョブを知ることができます。このコマンドを使用するか、あるいは即時にもう一度終了しようとすると、シェルは 2 回目の警告は出さず、延期されていたジョブは終了します。

自動イベント、定期的イベント、および時間指定イベント

シェルのライフ・サイクルの中で、いろいろな時間に 自動的にコマンドを実行して他のアクションを実行するさまざまな方法があ ります。

各国語システム報告書

システムの多文化サポートを使用すると、setlocale 関数が呼び出されて、該当する文字種別とソートが判別されます。 この関数は、通常は LANG および LC_CTYPE 環境変数を調べます。詳細は、システムの資料を参照してください。

不明の文字 (出力可能でも制御文字でもない文字) は ¥nnn 形式で出力されます。

version シェル変数は、シェルのコンパイル時に選択されたオプションを示 します。newgrp 組み込みコマンドおよび echo_style シェル変数、そしてシェルの入力ファイルの場所 (tcsh ファイルを参照) にも注意してください。

制約事項: 現在のところ、tcsh シェルは 3 つのロケールをサポートしていません。 サポートしていないロケールは、IBM-1388 (中国語)、IBM-933 (韓国語)、および IBM-937 (中国語 (繁体字)) です。

処理シグナル

ログイン・シェルは、ファイル ~/.logout を読み取るときには 割り込みを無視します。 シェルは、-q 付きで開始されていない限り、終了 (quit) シグナル を無視します。 ログイン・シェルは終了 (terminate) シグナルを取り込みますが、非ログイン・ シェルは自分の親から終了動作を継承します。 その他のシグナルは、シェルがその親から継承した値を持ちます。

シェル・スクリプトでは、シェルによる割り込みシグナルおよび 終了 (terminate) シグナルの処理は onintr で制御することができ、ハングアップの処理は hup および nohup で制御する ことができます。

ハングアップ時にはシェルは終了します (logout シェル変数も参照)。 デフォルトでは、シェルの子も終了しますが、シェルは終了時に子に対して ハングアップを送信しません。hup を使用すると、シェルの終了時にシ ェルが子にハングアップを送信するようになり、nohup を設定すると子はハングアップを無視するようになります。

管理端末

シェルは editquoteexecute という 3 種類の端末 (tty) モードを使用 します。edit は編集時に使用され、quote はリテラル文字を引用するときに使用され、execute はコマンドの実行時に使用されます。 シェルは各モードのいくつかの設定値を一定に保つので、tty を一致しない状態のままにして残すコマンドでもシェルを妨害しません。 シェルは、tty のスピードや埋め込みの変更とも調和します。 一定に保たれる tty モードのリストは、組み込み setty で 調べたり、変更したりできます。 エディターは CBREAK モード (またはそれに相当するもの) を使用しますが、それでも先行入力文字をとります。

echotcsettc および telltc コマンドを使用 すると、コマンド行から端末機能を操作およびデバッグすることができます。

tcsh シェルはウィンドウのサイズ変更に自動的に順応し、環境変数 LINES および COLUMNS が設定されている場合にはそれらを調整します。

tcsh 組み込みコマンド

以下の表に、tcsh組み込みコマンドを示します。これらは /bin/sh 組み込みコマンドではありません。

その他の tcsh 組み込みコマンドも z/OS シェルにはあります。 場合によっては、それらは機能が異なることがあります。 tcsh バージョンのコマンドの解説については、各コマンドの説明 を参照してください。

tcsh シェルには、組み込みコマンドだけでなく、一連の特殊別名があります。
  • beepcmd
  • cwdcmd
  • periodic
  • precmd
  • シェル
これらの別名のそれぞれは、設定されている場合には、指示された時刻に 自動的に実行されます。 初期設定では、これらの別名は定義されていません。別名についての詳細は、 別名置換を参照してください。
上記の別名の説明を以下に示します。
beepcmd
シェルが端末ベルを鳴らすときに実行されます。
cwdcmd
作業ディレクトリーの変更のたびに実行されます。 例えば、ユーザーが xterm および twm のようなタイトル・バーをサポートするウィンドウ・ マネージャーに親変更したものを使用する X Window システム上で作業しており、以下のコマンド
> alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd ^G"'
を実行した場合、シェルは、実行中の xterm のタイトルをホストの名前、コロン、および 絶対パス名で表された現行作業ディレクトリーになるように変更します。 これを行うもっと凝った方法は次のようなものです。
> alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"'
この場合、 ホスト名と作業ディレクトリーはタイトル・バーに表示されますが、ホスト名のみはアイコン・マネージャー・メニューに表示されます。 cd、pushd または popdcwdcmd に入れると、無限ループに入る可能性があります。
periodic
tperiod 分ごとに実行されます。 これは、新規メールなどのように、よくあるが頻繁でない変更を検査するのに便利な方法です。 例えば、次のコマンドを実行すると、
        > set tperiod = 30
        > alias periodic checknews
checknews プログラムが 30 分ごとに実行されます。 periodic が設定されていても tperiod が設定されていない場合または 0 に設定されている場合、periodicprecmd と同じように働きます。
precmd
それぞれのプロンプトが出力される直前に実行されます。 例えば、次のコマンドを実行すると、
> alias precmd date
date は、シェルが各コマンドの入力を促す直前に実 行されます。precmd を設定して何を行うことができるかについて 制限はありませんが、判断力を働かせる必要があります。
シェル
自分ではインタープリターを指定しない実行可能スクリプト用に インタープリターを指定します。最初のワードは、インタープリターの絶対パス名でなければなりま せん。例えば、/bin/tcsh また は /usr/local/bin/tcsh (デフォルトでは、これは /bin/tcsh に設定されます)。

プログラミング構成

構成 アクション
breaksw switch から break が出され、endsw の後 再開されます。
case label switch 内のラベル。switch の説明を参照してください。
continue 最も近い while または foreach ループの 実行を継続します。現在行の残りのコマンドが実行されます。
default switch ステートメントの中のデフォルト case にラベルを付けます。これは、すべての case ラベルの後にくる必要があります。

else
end
endif
endsw

この後に示されている foreach、if、switch、およ び while ステートメントの説明を参照してください。
goto word goto では、word はファイル名およびコマンドであり、置換されて形式 label のストリングになります。tcsh シェルは可能な限りその入力の前の部分に戻り、形式 label (おそ らくブランクまたはタブがその前にある) の行を探し、その行の後から実行を 継続します。

foreach

end

変数名をワード・リストの各メンバーに逐次設定してゆき、このコマンドとこれに対応する end との間にある一連のコマンドを実行します。 (foreach と end はどちらも単独で別々の行に指定する必要があります。)組み込みコマンド continue を使用すればループを早めに続行でき 、組み込みコマンド break を使用すればループを早めに終了する ことができます。このコマンドが端末から読み取られる場合、ループ内の文が実行される 前に foreach? (または prompt2) で入力が促されるとすぐにこのループが読み取られます。 端末でループの中の項目をタイプミスをした場合には、それを取り消すことが できます。

if (expr) then

else if
(expr2) then

else

endif

指定された expr が真である場合、最初の else の コマンドが実行されます。そうではなく、expr2 が真である場合に は、2 番目の else のコマンドが実行されます。 else-if の対はいくらでも指定できますが、必要な endif は 1 つだけです。 else 部分はオプショナルです。(ワード else および endif は入力行の先頭に指定しな ければなりません。if はその入力行に、または else の 後に、単独で指定する必要があります。)

switch (string)
case str1:

breaksw

default

breaksw
endsw

それぞれの case ラベルは、展開される最初のコマンドおよびファイル名で ある指定された string と順次にマッチングされます。 ファイルのメタキャラクター *, ? および […] は、変数展 開が行われる case ラベルの中で使用できます。 default ラベルが検出される前にいずれのラベルも一致しない 場合には、実行は default ラベルの後から開始されます。それぞれの case ラベルおよび default ラベルは、行の 先頭に指定する必要があります。コマンド breaksw により、endsw の後実行が継続されます。これ以外の場合には、C の場合のように制御は case ラベルおよ び default ラベルには流れません。一致するラベルがなく、default もない場合、endsw の後で 実行が継続されます。

while (expr)

end

expr (式) がゼロ以外の値に評価される限り、while とそ れに対応する end の間のコマンドを実行します。whileend は入力行に単独で指定する必要があります。 break および continue を使用すれば、ループを早めに 終了したり、継続したりできます。入力が端末からの場合には、foreach の場合のように最初にループ に入るときにユーザーは入力を促されます。

tcsh のシェル変数と環境変数

ここで説明する変数は、tcsh シェルにとって特別な意味があります。 tcsh シェルは、開始時に addsuffixargvautologoutcommandecho_styleeditgidgrouphomeloginshpathpromptprompt2prompt3shellshlvltcshtermttyuiduser、およ び version を設定します。 これらは、ユーザーが変更しない限り、これ以降変更されません。 tcsh シェルは、必要に応じて cwddirstackowd、および status を更新し、ログアウト時 に logout を設定します。

シェルは、grouphome pathshlvlterm、および user を同じ名前の環境変数と一致させます。環境変数が変更されると、シェルは (シェル変数が読み取り専用でない限り) 必ず対応するシェル変数を変更して一致させます。逆の場合も同様です。 cwd と PWD は同じ意味を持っていますが、このような仕方では一致させられません。

シェルは、path および PATH の異なる形式を自動的に相互変換します。

表 2. tcsh 組み込みシェル変数
変数 目的
addsuffix この変数を設定した場合、ファイル名補完機能によって / がディレクトリーの末尾に、またス ペースを通常ファイルの末尾に追加されます。
ampm この変数を使用すると、ユーザーは tcsh プロンプト内の時刻形式を変更で きます。特に ampm はユーザー・プロンプト内の %T および %P 書式設定シーケンスを変更します。 これを設定すると、すべての時刻が 12 時間 AM/PM 形式で示されます。
argv シェルの引数です。定位置パラメーターは argv から取られます。 例えば、$1 は $argv に置き換えられます。デフォルトで設定されます が、通常は対話式シェルでは空です。
autocorrect この変数を設定した場合、補完機能のたびにそれに先立って spell-word エディター・コマンドが自動的に起動されます (この変数は実装されていません)。
autoexpand この変数を設定した場合、補完機能が試みられるたびにそれに先立って、expand-history エディター・コマンドが自動的に 起動されます。
autolist この変数を設定した場合、補完機能で確定できなかったときは、候補がリストされ ます。ambiguous に設定した場合、候補がリストされるのは、補完機能によって新しい文字が追加されなかった ときだけです。
autologout 自動ログアウトされるまでの未活動の状態の時間 (分数) に設定します。 z/OS プラットフォームでは、自動ロック機能はサポートされていません。(自動ロック用になるよう意図して) autologout 文 に 2 番目のパラメーターを指定した場合、このパラメーター は autologout に割り当てられます。シェルは、自動的にログアウトするとき、autologout を出力し、変数 logout を automatic に設定して終了します。 ログイン・シェルおよびスーパーユーザー・シェルでは、デフォルトでは 60 (60 分後に自動ログアウト) に設定されますが、ウィンドウ・システムのもとでシェルが実行されている (DISPLAY 環境変数 が設定されている) とみなされる場合、あるいは tty が疑似 tty (pty) である 場合には、設定されません。logout シェル変数も参 照してください。
backslash_ quote この変数を設定した場合、円記号 (¥) は常に ¥、' (単一引用符) お よび " (二重引用符) をエスケープします。この設定により、複雑なエスケープを簡単にすることがで きますが、csh スクリプトでは構文エラーが発生する可能性があります。
cdpath サブディレクトリーが現行ディレクトリーにない場合に、cd がサ ブディレクトリーを探すディレクトリーのリスト。
command 設定した場合、-c フラグを付けてシェルに渡されたコマンド。
complete enhance に設定した場合、補完機能は最初、大文字 小文字を無視し、次にピリオド、ハイフンおよび下線 ('.'、'-' および '_') をワード・セパレーターとみなし、ハイフンと下線を同じものとみなし ます。
correct cmd に設定した場合、コマンドは自動的にスペル 訂正が行われます。complete に設定した場合、コマンドは自動的に 補完されます。all に設定した場合、コマンド行全体が訂正されます。
cwd 現行ディレクトリーの絶対パス名。dirstack およ び owd シェル変数も参照してください。
dextract この変数を設定した場合、pushd +nn 番目のディレクトリーを、ディレクトリー・スタックの最上部に回すのでは なく、そこから抽出します。
dirsfile dirs -S および dirs -L がヒストリー・ファイルを探す デフォルトの場所。設定しなかった場合は、 ~/.cshdirs が使用されます。 通常は、 ~/.cshdirs の前 に ~/.tcshrc だけが検索場所になるので、dirsfile は ~/.login ではなく ~/.tcshrc の 中に設定する必要があります。
例えば、以下のとおりです。
set dirsfile = ~/.cshdirs
dirstack ディレクトリー・スタック上のすべてのディレクトリーの配列。 $dirstack[1] は現行作業ディレクトリー、$dirstack[2] はスタック上の最初のディレクトリーという具合に なります。現行作業ディレクトリーは $dirstack[1] ですが、デ ィレクトリー・スタック置換では =0 になることに注意してください。dirstack を設定すれば自由にスタックを変更 できますが、最初のエレメント (現行作業ディレクトリー) は常に正しいものです。 cwd および owd シェル変 数も参照してください。
dunique この変数を設定した場合、pushd はスタックから name のインスタンスを除去してから これをスタックに入れます。
echo この変数を設定した場合、引数を持つそれぞれのコマンドは実行される直前にエコー されます。非組み込みコマンドの場合、展開はすべてエコーの前に行われ ます。組み込みコマンドは、コマンドおよびファイル名の置換の前にエコ ーされます。それらの置換がその後選択的に実行されるからです。 -x コマンド行オプションで設定します。
echo_style 組み込み echo のスタイル。次のものに設定できます。
bsd
最初の引数が -n の場合は、改行をエコーしません。
sysv
エコー・ストリングの中で円記号エスケープ・シーケンスを認識します。
both
-n フラグと円記号エスケープ・シーケンス の両方を認識します (デフォルト)。
none
何も認識しません。
デフォルトでは、ローカル・システム・デフォルト に合わせて both に設定します。
この変数の使用例を以下に示します。
 > echo $echo_style
 bsd
 > echo "¥n"
 ¥n
 > echo -n "test"
 test>
 > set echo_style=sysv
 > echo $echo_style
 sysv
 > echo "¥n"

 > echo -n "test"
 -n test
 > set echo_style=both
 > echo $echo_style
 both
 > echo -n "test"
 test> echo "¥n"

 >set echo_style=none
 > echo $echo_style
 none
 > echo -n "test"
 -n test
 > echo "¥n"
 ¥n
 >
edit 設定した場合、コマンド行エディターが使用されます。 対話式シェルではデフォルトで設定されます。
ellipsis 設定した場合、%c'/'%. および %C プロンプト・シーケン ス (prompt シェル変数を参照) は、省略されたディレ クトリーを / ではなく省略符号 (…) で示します。
fignore 補完機能が無視するファイル名接尾部をリストします。
filec tcsh シェルでは、補完機能は常に使用されるので、この変数は無視されます。
gid ユーザーの実グループ ID。
group ユーザーのグループ名。
histchars ヒストリー置換で使用される文字を決定するストリング値。この値の最初の文字がヒストリー置換文字として使用され、デフォルト文字 ! (感嘆符) にとって代わります。 この値の 2 番目の文字は、即時置換の文字 ^ (曲折アクセント記号) にとって代わ ります。
histdup ヒストリー・リスト内の重複項目の処理を制御します。 all に設定した場合、ヒストリー・リストには固 有のヒストリー・イベントだけが入れられます。 prev に設定した場合、最後のヒストリー・イ ベントが現行コマンドと同じだったときには、現行コマンドはヒストリー に入れられません。 erase に設定した場合、同じイベントがヒストリ ー・リスト内にあると、その古いイベントは消去されて、現行の新しいイベ ントが挿入されます。 prev オプションと all オプションではヒストリー・イベントの番号が付けなおされるの で、ずれは生じません。
histfile history -S および history -L がヒストリー・ファイ ルを探すデフォルトの場所。設定しなかった場合は、 ~/.history が使用されます。 異なるマシンの間で同じホーム・ディレクトリーを共用する場合、あるいは 別々のヒストリーを異なる端末に保管する場合に、histfile は役立ちます。 通常は、 ~/.history の前に ~/.tcshrc だ けが検索場所になるので、histfile は、 ~/.login ではなく ~/.tcshrc の中に 設定する必要があります。
例 :
set histfile = ~/.history 
histlit 設定した場合、組み込みコマンド、エディター・コマンドおよ び savehist メカニズムは、ヒストリー・リスト内の リテラル (未展開) 形式の行を使用します。 toggle-literal-history エディター・コマンド も参照してください。
history 最初のワードは、保管するヒストリー・イベントの数を指示します。 オプショナルの 2 番目のワードは、ヒストリーの出力フォーマットを指示します。この ワードを指定しない場合、%h¥t%T¥t%R¥n が使用されます。 この書式シーケンスは prompt の部分で説明します。(%R は意味が変化することに注意してください。) デフォルトでは 100 に設定されます。
home 呼び出し側のホーム・ディレクトリーに初期化されます。~ のファイル名展開はこの変数を参照します。
ignoreeof 空ストリングまたは 0 に設定した場合に、入力デバイスが端末であるときには、end-of-file コマンド (通常はユーザー が ^D を空の行に入力して生成される) を使用すると、シェル は終了せずに 'Use "logout" to leave tcsh' を出力します。 これにより、シェルが誤って削除されるのを防ぐことができます。 n に設定した場合、シェルは n - 1 個 の end-of-file を連続して無視し、n 番目で終 了します。設定しなかった場合、1 が使用されます。すなわち、シェルは単一の ^D で終了します。
implicitcd この変数を設定した場合、入力されたディレクトリー名を、それがそのディレクトリーに対する変更要求であるかのようにコマンドとして取り扱います。 verbose に設定した場合、ディレクトリーの変更は標準出力にエコーされます。 この働きは、非対話式シェル・スクリプト、あるいは複数のワードを含 んでいるコマンド・ストリングでは、禁止されています。 ディレクトリー変更は、同様の名前のコマンドの実行より前に行われ ますが、別名置換よりは後に行われます。 波形記号および変数の置換は、正常に行われます。
inputmode insert または overwrite に設定した場合、エディターは各行の先頭でその入力モードになります。
listflags x、a または A、あるい はそれらの任意の組み合わせ (例えば、xA) に 設定した場合、これは ls-F のフラグとして使用され、それは ls -xFls -Fals -FA あるいはその 組み合わせ (例えば、ls -FxA) のような働きをするようになり ます。a は (ファイルが '.' で始まっている場合 でも) すべてのファイルを示し、A は '.' およ び '..' を除くすべてのファイルを示し、 x は下方向ではなく全体をソートします。 listflags の 2 番目のワードを設定した場合、それは ls(1) へのパスとし て使用されます。
listjobs この変数を設定した場合、あるジョブが延期されるときすべてのジョブがリストされます。 long に設定した場合、リストは長形式になります。
listlinks この変数を設定した場合、ls-F 組み込みコマンドは、それぞれのシンボリ ック・リンクが指し示すファイルのタイプを示します。 使用例については、tcsh の ls-F 組み込みコマンド : ファイルをリストするを参照してください。
listmax 最初に要求せずに list-choices エディター・ コマンドがリストする項目の最大数。
listmaxrows 最初に要求せずに list-choices エディター・コマンドがリストする 項目の行の最大数。
loginsh ログイン・シェルの場合、そのシェルが設定します。 シェル内で設定したり設定解除しても作用しません。 shlvl も参照してください。
logout 通常のログアウトの前にシェルによって normal に 設定され、自動ログアウトの前に automatic に設定されます。シェルがハングアップ・シグナルによって kill された場合は hangup に 設定されます。 autologout シェル変数も参照してください。
mail 着信メールがあるかどうかを確認するためのファイルまたはディレクトリーの名前 で、ホワイト・スペースで区切られます。数値ワードが前に付 く場合があります。それぞれのプロンプトの前に、前回の確認以降 10 分が経過 している場合には、シェルは各ファイルを確認し、'You have new mail' と 告げます。(あるいは、メールが複数のファイルを含んでいる場合には、'You have new mail in name' と告げます。) これは、ファイル・サイズがゼロより大きく、変更時刻がアクセス時刻よりも 後の場合に行われます。

ユーザーがログイン・シェルにいる場合、無駄な通知を避けるために、シェ ルの始動時よりも後にメール・ファイルが変更されたのでない限り、メール ・ファイルは報告されません。ほとんどのログイン・プログラムは、ユーザーがログインするときに ユーザーにメールが到着しているかどうかを知らせます。

mail で指定されたファイルがディレクトリーである場合、そのディレクトリ ー内の各ファイルを別個のメッセージとしてカウントし、状況に 応じて 'You have n mails.' または 'You have n mails in name.' と報告 します。 この機能は、主に Andrew Mail System のようにこの方法でメール を保管するシステムのために用意されています。

mail の最初のワードが数値である場合、それは異なるメール確認 インターバル (秒) とみなされます。非常にまれですが、シェルは 'You have new mail.' ではなく 'You have mail.' と報告するこ とがあります。

matchbeep never に設定した場合、補完機能はビープ音を鳴 らしません。nomatch に設定した場合、一致する ものがないときにのみビープ音を鳴らします。ambiguous を設定した場合、一致するものが複数 個あるときにビープ音を鳴らします。 notunique を設定した場合、正確に一致するもの が 1 つあるが、さらに他にもっと長くて一致するものがあるときにビープ音 を鳴らします。この変数を設定しなかった場合には、ambiguous が使用されます。
nobeep この変数を設定した場合、ビープ音はまったく使用できません。
noclobber この変数が設定されると、ファイルが誤って破壊されないように、 また (『入力または出力』で説明するように) >> リダイレクトが既存のファイルを指すように、 出力リダイレクトに制限が課されます。
noglob この変数を設定した場合、ファイル名置換およびディレクトリー・スタック置換は禁止 されます。ファイル名を取り扱わないシェル・スクリプトにおいて、あるいはファイル 名のリストが得られた後に展開を行いたくない場合に、これは非常に役 立ちます。
nokanji この変数を設定した場合、シェルが漢字をサポートする ようなとき (version シェル変数を参照)、メタキーを使用できるように漢字は使用不可にされます。
nonomatch この変数を設定した場合、既存のどのファイルとも一致しないファイル名置換またはデ ィレクトリー・スタック置換は、そのまま残され、エラーを起こすことはあ りません。しかし、置換が不完全になる場合にはエラーになります。すなわ ち、echo [ は引き続きエラーになります。
nostat 補完機能の実行時に stat(2) を行ってはならないディレクトリー (またはディレクトリーと一致するグロブ・パターン (ファイル名の置換を参照)) のリスト。これは、通常は、stat(2) の実行に時間のかかりすぎるディレクトリー (例えば、/afs) を除外するのに使用されます。
notify この変数を設定した場合、シェルはジョブの完了を非同期的に知らせます。 デフォルトでは、プロンプトを出力する直前にジョブの完了を伝えます。
owd 古い作業ディレクトリーで、cd および pushd が使用す る - (ハイフン) と同等です。 cwd および dirstack シェ ル変数も参照してください。
path 実行可能コマンドを探す対象となるディレクトリーのリスト。 ヌル・ワードは現行ディレクトリーを指定します。path 変数がない場合、絶対パス名だけが実行されます。 path は、開始時にシェルが PATH 環境変数からとって設定するか、 あるいは PATH がなければシステム依存の デフォルト (/usr/local/bin /usr/bsd /bin /usr/bin など) に設定されます。 シェルは、コンパイルが行われた方法に応じて、'.' を path の最初に置くか、 最後に置くか、あるいはそれをまったく省略します。version シェル変数を参照してください。 -c オプションも -t オプションも渡されていないシェ ルは、 ~/.tcshrc の読み取りの後、path がリセットされる たびに、path 内のディレクトリーの内容をハッシュします。シェルがアクティブである間に path 内のディレクトリーに新しいコマン ドを追加した場合、シェルがそれを検出できるように再ハッシュを行わなけ ればならないことがあります。
printexit- value この変数を設定した場合、対話式プログラムがゼロ以外の状況で終了すると、シェルは 'Exit status' を出力します。
prompt2 ¥ (円記号) で終了している行の後に、while および foreach の ループにおいてプロンプトで使用するストリング。prompt の場合と同じ書式 シーケンスを使用することができます (%R の意味が変わることに注意してください)。 対話式シェルの場合、デフォルトでは %R? に 設定されます。
prompt3 自動スペル訂正を確認する際にプロンプトで使用するストリング。 prompt の場合と同じ書式シーケンスを使用でき ます (%R の意味が変わることに注意してください)。デフォルトでは CORRECT>%R (y|n|e|a)? に設定されます。
promptchars 2 文字のストリングに設定した場合、prompt シェル変数内の %# 書式設 定シーケンスは、通常のユーザーの最初の文字とスーパーユーザー の 2 番目の文字に置き換えられます。
pushdtohome この変数を設定した場合、引数なしの pushd は、 cd のように pushd ^ を実行します。
pushdsilent この変数を設定した場合、pushd および popd はディレクトリー・ スタックを出力しません。
recexact この変数を設定した場合、より長い一致があっても、正確に一致するもので補完 機能は完了します。
recognize_ only_ executables この変数を設定した場合、コマンド・リストは、パス内の実行可能なファイルだけしか 表示しません。
rmstar 設定した場合、rm * の実行前にユーザーにプロンプトが出されます。
rprompt プロンプトが画面の左側に表示されているときに画面の右側 (コマンド入力の後ろ) に出力されるストリング。 これは、prompt と同じ書式設定文字を受け入れます。これは、コマンド入力が不明確にならないように必要に応じて自動的に 消えたり現れたりします。また、プロンプト、コマンド入力、およびこれ自体が 最初の行に一緒に収まる場合にのみ現れます。 edit が設定されていない場合、rprompt はプロンプトの後、コマンド入力 の前に出力されます。
savedirs この変数を設定した場合、シェルは終了前に dirs -S を実行します。
savehist この変数を設定した場合、シェルは終了前に history -S を実行します。最初のワードを数値に設定した場合、最高でその数の行が保管されます (その数はヒストリーと等しいかそれより小さくなければなりません)。 2 番目のワードを merge に設定すると、 ヒストリー・リストは既存のヒストリー・ファイル (ある場合) と置き換わるの ではなく、それとマージされます。そして、タイム・スタンプによってソート され、最新のイベントが保持されます。
例 :
set savehist = ( 15 merge )
sched sched 組み込みコマンドがスケジュール・イベントを出力する形式。これを設定しない場合、%h¥t%T¥t%R¥n が使用されます。 この書式シーケンスは prompt の部分で説明した ものです。%R の意味が変わることに注意してくだ さい。
shell シェルが常駐するファイル。これは、シェルを fork する際に、実行ビット ・セットを持っているファイルで、システムが実行することのできない ファイルを解釈するのに使用されます (組み込みおよび非組み込みコマンドの実行を参照)。 (システム依存の) シェルのホームに初期化されます。
shlvl ネストされるシェルの数。ログイン・シェルでは 1 にリセット されます。loginsh も参照してください。
status 最後のコマンドが戻す状況。 それが異常終了した場合には、0200 が状況に付加されます。 失敗した tcsh 組み込みコマンドは終了状況 1 を戻し、それ 以外の組み込みコマンドはすべて 0 を戻します。
tcsh R.VV.PP 形式のシェルのバージョン番号。ここで、R は主なリリース番号、VV は現行バージョン、PP はパッチ・レベルです。
term 端末タイプ。通常は ~/.login 内に設定されます。
tperiod 周期的特殊別名の実行と実行の間の期間 (分単位)。
tty tty の名前。接続されていない場合には空です。
uid ユーザーのログイン名。
user ユーザーのログイン名。
verbose 設定した場合、それぞれのコマンドのワードが、ヒストリー置換 (ある 場合) の実行後に出力されます。 –v コマンド行オプションで設定されます。
version バージョン ID スタンプ。これは、シェルのバージョン番号 (tcsh を参照)、オリジン、リリース日付、ベンダー、オペレーティング・システムと マシン (VENDOR、OSTYPE、および MACHTYPE 環境変数を参照) および コンパイル時に設定されたオプションの (コンマで区切られた) リストを 含んでいます。配布時にデフォルトとして設定されているオプショ ンにはそのことが示してあります。
8b
シェルは 8 ビット・クリーンです (デフォルト)。
7b
シェルは 8 ビット・クリーンではありません。
nls
システムの多文化サポートが使用されます。多文化サポートを持つシステムのデフォルトです。
If
ログイン・シェルは、/etc/csh.cshrc の後で はなくその前に /etc/csh.login を実行し、また ~/.tcshrc およ び ~/.history の後ではなくそれらの 前に ~/.login を実行します。
dl
'.' はセキュリティーのために path の中の最後に置かれます (デフ ォルト)。
nd
'.' はセキュリティーのために path から省略されます。
vi
デフォルトは、emacs ではく vi スタイルの編集です。
dtr
ログイン・シェルは終了時に DTR を除去します。
bye
bye は logout の同義語であり、log は watchlog の代替名です。
al
autologout が使用可能に されます (デフォルト)。
kan
nokanji シェル変数が設定されていない限り、漢字が使用され、ISO 文 字セットは無視されます。
sm
システムの malloc が使用されます。
hb
シェル・スクリプトの実行時に #!<program> <args> 規則がエミュレートされます。
ng
組み込み newgrp が使用可能です。
rh
シェルは REMOTEHOST 環境変数を設定しようとします。
afs
ローカル認証が失敗した場合、 シェルは Kerberos サーバーを使用してパスワードまたはパスワード・フレーズを検査します。afsuser シェル変数または AFSUSER 環境変数 はローカル・ユーザー名 (設定されている場合) を変更します。
管理者は、ローカル・バージョンの相違を示すために追加のストリングを入力 することができます。
visiblebell 設定した場合、音響ベルではなく画面の明滅が使用されます。 nobeep を参照してください (現時点では実装 されていません)。
watch ログインおよびログアウトについて監視するためのユーザー/端末の対のリ スト。ユーザーが any の場合、指定されたユーザ ーに関してすべての端末が監視されます。その逆も同様です。watch を (any any) に設定すると、すべてのユーザーとす べての端末が監視されます。例えば、以下のとおりです。
set watch = (george ttyd 1 any console $user any)
と指定すると、ttyd1 のユーザー george、console のすべてのユーザー、およびすべての端末の本人 (または不法侵入者) の活動が報告されます。
デフォルトでは、ログインとログアウトは 10 分ごとに検査されますが、watch の最初のワードを数値に設定すれば、その分数ごとに検査を行うこと ができます。例えば、以下のとおりです。
set watch = (1 any any)
と指定すると、1 分ごとにすべてのログイン/ログアウトが報告されます。報告 を待てない場合は、log 組み込みコマンドを使用していつでも監視報 告を得ることができます。 watch を最初に設定したときには、(組み込み log の場合と 同様に) すべての現行ログインが報告されます。

who シェル変数は、監視報告の形式を制御します。

who 監視メッセージの書式制御ストリング。 以下のシーケンスは、示されている情報に置き換えられます。
%n
ログインまたはログアウトしたユーザーの名前。
%a
観察されたアクション。つまり 'logged on'、'logged off'、または 'replaced olduser on'。
%l
ユーザーがログインまたはログアウトを行った端末 (tty)。
%M
リモート・ホストの完全ホスト名。 またはログイン/ログアウトがローカル・ホストから行われた場合は「local」。
%m
最初の「.」(ピリオド) までのリモート・ホストのホスト名。 それが IP アドレスまたは X Window システム画面である場合には、フルネームが出力されます。
%M と %m は、 リモート・ホスト名を /etc/utmp に保管するシステムでのみ使用できます。 設定しなければ、%n は %m からの %a %l となるか、あるいは %n はリモート・ホスト名を保管しないシステムの %a %l とな ります。
wordchars forward-word、backward word などのエディター・コマンドによってワードの一部とみなされる非英数字のリスト。設定しなかった場合は、*?_-.[] ~= が使用されます。

表 2 で説明されていない tcsh シェル変数を以下で説明します。

プロンプト
端末からの各コマンドを読み取る前に出力されるストリング。prompt は、以下のような書式設定シーケンスのいずれでも含むこと ができ、それらは示されている情報に置き換えられます。
%/
現行作業ディレクトリー。
%~
現行作業ディレクトリーですが、~ によって表されるあるユー ザーのホーム・ディレクトリー、および ~user によって表される他の ユーザーのホーム・ディレクトリーが 1 つのファイル名置換ごとに付きます。~user 置換が行われるのは、現行セッションのパス名内です でに ~user を使用している場合だけです。
%c[[0]n], %.[[0]n]
現行作業ディレクトリーの末尾コンポーネント、あるいは 数字の n がある場合 には n 個の末尾コンポーネント。n0 で始まっている場合には、形式 /trailing のトレーラー・コンポーネント の前にあるコンポーネントでスキップするものの数。 ellipsis シェル変数を設定すると、スキップされるコンポーネントは省略符号で 表され、全体が …trailing のようになります。~ 置換は %~~ の場合と同じように行われますが、末尾コンポーネントをカウントする際には ~ コンポーネントは無視されます。
%C
%c と似ていますが、^ 置換はありません。
%h, %!, !
現行ヒストリー・イベント番号。
%M
完全ホスト名。
%m
最初の「.」(ピリオド) までのホスト名。
%S (%s)
スタンドアウト・モードの開始 (停止)。
%B (%b)
太文字モードの開始 (停止)。
%U (%u)
下線モードの開始 (停止)。
%t, %@
12 時間 AM/PM 形式の時刻。
%T
%t と似ていますが、24 時間形式です (ただし ampm シェル変数を参照)。
%p
秒を含む 12 時間 AM/PM 形式の正確な時刻。
%P
%p と似ていますが、24 時間形式です (ただ し ampm シェル変数を参照)。
¥c
cbindkey の場 合と同様に解析されます。
^c
cbindkey の場 合と同様に解析されます。
%%
1 つの %。
%n
ユーザー名。
%d
Day 形式の曜日。
%D
dd 形式の日。
%w
Mon 形式の月。
%W
mm 形式の月。
%y
yy 形式の年。
%Y
yyyy 形式の年。
%l
tcsh シェルの tty。
%L
プロンプトの最後から画面の最後または行の最後までを消去します。
%$
$ の直後のシェル変数または環境変数を展開します。
%#
通常のユーザーの場合は > (または promptchars シェル変数の最初の文字)、 スーパーユーザーの場合は # (または promptchars の 2 番目の文字)。
%{string%}
リテラル・エスケープ・シーケンスとして string を含みます。これは端末属性を変更する場合にのみ使用してください。カーソル位置を動 かしてはなりません。 これは prompt の最後のシーケンスにはできません。
%?
プロンプトの直前に実行されるコマンドの戻りコード。
%R
prompt2 ではパーサーの状況。 prompt3 では訂正されたストリング。 history ではヒストリー・ストリング。
太字、スタンドアウト、および下線のシーケンスは、しばしばスーパーユーザー ・シェルを区別するのに使用されます。例えば、以下のとおりです。
>set prompt = "%m [%h] %B[%@%b [%/] you rang?"
tut [37] [2:54] [/usr/accts/sys] you rang? _
対話式シェルにおいてはデフォルトでは %# に設定されます。
symlinks
これは、シンボリック・リンクの解決を制御するために、いくつかの異なる値に設定できます。
  • chase に設定すると、シンボリック・リンク を含んでいるディレクトリーに現行ディレクトリーが変更されると常に、そのリンクが指し示すディレクトリーの実名に展開されます。 ユーザーのホーム・ディレクトリーについてはこれは機能しません。
  • ignore に設定すると、リンクが交差する前に、シェルは現行ディレクトリーを基準にして現行ディレクトリーを作成しよ うとします。これは、シンボリック・リンクを介して cd を実行し、その後 cd.. を行うと、元のディレクトリーに戻ることを意味し ます。これが影響するのは、組み込みコマンドとファイル名補完だけです。
  • expand に設定すると、シェルはパス名と類似した 引数を実際に展開することにより、シンボリック・リンクを決定しようと します。これは、組み込みコマンドだけでなく、いずれのコマンドにも影 響を与えます。残念ながら、これは認識の難しいファイル名 (コマン ド・オプションに組み込まれたファイル名など) については機能しません。 引用符号を用いることにより展開を抑制することができます。 一般にこの設定は非常に便利ですが、展開する引数を認識し損なうと、誤解を生じさせたり、混乱を招くことがあります。 妥協案として、ignore を使用し、必要に 応じて (デフォルトで ^X-n にバインドされた) エディター・ コマンド normalize-path を使用できます。
いくつかの例を順に示します。まずは試しにいくつかのディレクトリーをセットアップします。
        > cd /tmp
        > mkdir from from/src to
        > ln -s from/src to/dist 
シンボリック・リンクが設定されていない場合は次のようになります。
        > cd /tmp/to/dist; echo $cwd
        /tmp/to/dist
        > cd ..; echo $cwd
        /tmp/from 
シンボリック・リンクが chase に設定されている場合は次のようになります。
        > cd /tmp/to/dst; echo $cwd
        /tmp/from/src
        > cd ..; echo $cwd
        /tmp/from
シンボリック・リンクが ignore に設定されている場合は次のようになります。
        > cd /tmp/to/dist; echo $cwd
        /tmp/to/dst
        > cd ..; echo $cwd
        /tmp/to
シンボリック・リンクが expand に設定されている場合は次のようになります。
        > cd /tmp/to/dist; echo $cwd
        /tmp/to/dst
        > cd ..; echo $cwd
        /tmp/to
        > cd /tmp/to/dist; echo $cwd
        /tmp/to/dst
        > cd ".."; echo $cwd
        /tmp/from
        > /bin/echo ..
        /tmp/to
        > /bin/echo ".."
        .. 
expand 展開は、
  1. cd のような組み込みコマンドについては、ignore とまったく同様に働きます。
  2. 引用符の使用によって抑制されます。
  3. ファイル名が非組み込みコマンドに渡される前に行われます。
time
ある数値に設定すると、指定された秒数を超える CPU 時間を要したコマンドについて、コマンド完了後に time 組み込みコマンドが自動的に実行されます。2 番目のワードがある場合、それは time 組み込みコマンドの出力の書式制御 ストリングとして使用されます。 以下のシーケンスを書式制御ストリングの中で使用できます。
%U
ユーザー・モードでプロセスが費やした CPU 時間 (秒単位)。
%S
カーネル・モードでプロセスが費やした CPU 時間 (秒単位)。
%E
経過した (壁時計) 時間 (秒単位)。
%P
(%U + %S) / %E として計算された CPU のパーセント。
%W
プロセスがスワップされた回数。
%X
(共用) テキスト・スペースの平均使用量 (K バイト単位)。
%D
(非共用) データ/スタック・スペースの平均使用量 (K バイト単位)。
%K
合計使用量 (%X + %D) (K バイト単位)。
%M
任意の時刻にプロセスが使用していた最大メモリー (K バイト単位)。
%F
メジャー・ページ・フォールトの数 (ディスクから持ってくる必要のあったページ)。
%R
マイナー・ページ・フォールトの数。
%I
入力操作の数。
%O
出力操作の数。
%r
受信したソケット・メッセージの数。
%s
送信したソケット・メッセージの数。
%k
受信したシグナルの数。
%w
自発コンテキスト・スイッチ (wait) の数。
%c
非自発的コンテキスト・スイッチの数。
BSD リソース制限機能がない場合、最初の 4 つのシーケンスしかサポ ートされません。リソース使用状況報告書をサポートするシステムの デフォルトの時刻形式は次のとおりです。
Uu   %Ss %E %P %X+%Dk %I+%Oio   %Fpf+%Ww

表 3 には、tcsh 環境変数のリストを記載しています。

表 3. tcsh 環境変数
環境変数 目的
COLUMNS サブディレクトリーが現行ディレクトリーにない場合に、cd がサ ブディレクトリーを探すディレクトリーのリスト。
DISPLAY X Window システムが使用します。設定した場合、シェル は AUTOLOGOUT を設定しません。
EDITOR デフォルト・エディターへのパス名。VISUAL 環境変数およ び run-fg-editor エディター・コマンドも参照 してください。
GROUP group シェル変数と同等です。
HOME HOME シェル変数と同等です。
HOST シェルが実行されているマシンの名前に初期化されます。これは、gethostname システム・コールによって求めら れます。
HOSTTYPE シェルが実行されているマシンのタイプに初期化されます。これは、コンパイル時に判別されます。この変数は一般にはもう使われていないもの であり、将来のバージョンでは取り除かれる予定です。
HPATH run-help エディター・コマンドがコマンドの資料を 探す対象となるディレクトリーの (コロンで区切られた形の) リスト。
LANG 優先文字環境を指定します。各国語システム報告書を参照してください。
LC_CTYPE この変数を設定した場合、CTYPE 文字処理だけが変更されます。各国語システム報告書を参照してください。
LINES 端末上の行数。管理端末を参照してください。
MACHTYPE マシン・タイプ (マイクロプロセッサー・クラスまたはマシン・モデル) で あり、コンパイル時に判別されます。
NOREBIND この変数を設定した場合、出力可能文字は SELF-INSERT-COMMAND に再バインドされません。 ユーザーが NOREBIND を設定した後、新しいシェルを開始する必要があります。各国語システム報告書を参照してください。
OSTYPE コンパイル時に判別されるオペレーティング・システム。
PATH 実行可能コマンドを探す対象となるディレクトリーの (コロンで区切られた 形の) リスト。path シェル変数と同等ですが、形式が異なっていま す。
PWD cwd シェル変数と同等ですが、それと一致させられ ません。実際にディレクトリーが変更された後しか更新されません。
REMOTE- HOST リモートからのユーザーのログイン元のホスト。その場合、シェルはそのホスト を判別することができます。(z/OS tcsh シェルは、現時点 では REMOTEHOST を定義してコンパイルされません。version シェル変数を参照してください。)
SHLVL shlvl シェル変数と同等です。
TERM term シェル変数と同等です。
USER user シェル変数と同等です。
VENDOR コンパイル時に決定されるベンダー。
VISUAL デフォルトのフルスクリーン・エディターへのパス名。 editor 環境変数および run-fg-editor エディター・コマンドを参照してください。

tcsh シェル変数を使用した自動変換の制御

tcsh シェルが stdin、stdout、または stderr をリダイレクトしている場合、シェルはタグ付けされたファイルのデフォルトを非自動変換に、およびリダイレクトで作成された ファイルのデフォルトを非タグ付けにします。以下の tcsh シェル変数はこの動作をオーバーライドします。
_TAG_REDIR_IN=TXT
リダイレクトされた stdin では、そのファイルのテキスト・フラグ (TXTFLAG) は以下のようにタグ付けされているものとして、オーバーライドされます。

TXTFLAG = ON、CCSID = 既存のファイル・タグ CCSID

CCSID = 0 の場合、効果はありません。

_TAG_REDIR_IN=BIN
リダイレクトされた stdin では、そのファイルのテキスト・フラグ (TXTFLAG) は以下のようにタグ付けされているものとして、オーバーライドされます。

TXTFLAG = OFF、CCSID = 既存のファイル・タグ CCSID

これにより、自動変換が使用不可となります。

_TAG_REDIR_OUT=TXT
リダイレクトされた stdout は以下のようにタグ付けされます。

TXTFLAG = ON、CCSID = 最初の書き込み時点の プログラム CCSID (まだタグ付けされていない場合)

_TAG_REDIR_OUT=BIN
リダイレクトされた stdout は以下のようにタグ付けされます。

TXTFLAG = OFF、CCSID = 最初の書き込み時点の プログラム CCSID (まだタグ付けされていない場合)

_TAG_REDIR_ERR=TXT
リダイレクトされた stderr は以下のようにタグ付けされます。

TXTFLAG = ON、CCSID = 最初の書き込み時点の プログラム CCSID (まだタグ付けされていない場合)

_TAG_REDIR_ERR=BIN
リダイレクトされた stderr は以下のようにタグ付けされます。

TXTFLAG = OFF、CCSID = 最初の書き込み時点の プログラム CCSID (まだタグ付けされていない場合)

自動変換シェル変数は、1 コマンドに対して、またはシェル・セッションかシェル・スクリプト内の 複数コマンドに対して指定することができます。その変数がユーザーの .tcshrc ファイルに設定されていると、子シェル、すなわちネストされたシェル・スクリプトに影響します。
注: 標準の tcsh シェルの実行では変数割り当て前にリダイレクトが行われるために 、1 つのコマンドに対するシェル変数を指定するための構文は、set var=value です。例えば、以下のとおりです。
(set _TAG_REDIR_OUT=TXT; command >file)

これらのシェル変数は、パイプライン・コマンドでも使用できます。例えば、これらの変数を使用して、パイプラインに書き出す各コマンドの標準出力またはパイプラインから読み込む各コマンドの標準入力にタグ付けすることができます。

tcsh ファイル

/etc/csh.cshrc
すべてのシェルが最初に読み取ります。
/etc/csh.login
/etc/csh.cshrc の後にログイン・シェルが読み取ります。
~/.tcshrc
/etc/csh.cshrc またはそれと同等のものの 後にすべてのシェルが読み取ります。
~/.history
savehist が設定されている場合、 ~/.tcshrc の後にログイン・シェルが読み取 ります。histfile も参照してください。
~/.login
シェルは、 ~/.tcshrc およ び ~/.history の後に ~/.login を読 み取ります。version シェル変数を参照してください。
~/.cshdirs
savedirs が設定されている場合、 ~/.login の後にログイン・シェルが読み取り ます。dirsfile も参照してください。
~/.logout
ログアウト時にログイン・シェルが読み取ります。
/bin/sh
# で始まっていないシェル・スクリプトを解釈するのに使用されます。
/tmp/sh*
< < の一時ファイル。

tcsh シェル : 問題と制限事項

tcsh シェルのいくつかの制限事項を以下に示します。
  • ワードは 1024 文字を超えることはできません。
  • システムでは、引数リストが 10240 文字に制限されています。
  • ファイル名展開を含んでいるコマンドの引数の数は、引数リストで 許可されている文字数の 1/6 に制限されています。
  • コマンド置換では、引数リストで許可されている文字数を超える文字 は置換できません。
  • ループを検出するために、シェルは 1 行の中の別名置換の数を 20 に 制限しています。

中断されたコマンドが再開されたときに、tcsh シェルは、そのコマンドが開始されたときのディレクトリーを 出力します (そのディレクトリーが現行ディレクトリーと異なる場合)。 これは、ジョブが内部的にディレクトリーを変更している 可能性があるので、誤解を生じる (つまり、誤りである) 可能性があります。

シェルの組み込み機能は、停止不能であり、再始動ができません。 'a ; b ; c' 形式のコマンド・シーケンスも、停止しようとすると、適 切に処理されません。ユーザーが 'b' を停止した場合、tcsh シェルは即時に 'c' を実行します。 この展開が別名によって行われる場合に、これは特に顕著に見られます。コマンドのシーケンスをサブシェルに強制的に移すには、それを () で 囲みます。例えば、( a ; b ; c ) のようにします。

プロセスが開始された後の tty 出力の制御が自由に行えません。仮想端末インターフェースでは、 出力制御用のオプションがさらに多く用意されています。

シェル・プロシージャーをシミュレートするために別名置換がかなりよく使用されます。 別名ではなくシェル・プロシージャーを用いるようにしてください。

ループ内のコマンドはヒストリー・リストには含まれません。制御構造は、組み込みコマンドとして認識するのではなく、構文解析してください。 これにより、制御コマンドはどこにでも置くことができ、| で結合できるようになります。また、& および ; (セミコロン) メタ 構文で使用することもできます。

foreach は、here ドキュメントを、 その最後を探すときは無視しません。

コマンド置換の出力で : (コロン) 修飾子を使用できなければなりません。

端末でカーソルを上方へ移動できない (端末タイプ 'dumb' の) 場合、画面の幅よりも長い行については画面の更新が適切に行えません。

HPATH および NOREBIND は必ずしも環境変数にする必要はありません。

'?'、'*' または '[]' のいずれも使用していないグロブ・パターン、あるいは '{}' または '~' を使用しているグロブ・パターンは正し く否定されません。

if の単一コマンド形式は、式が偽であり、コマン ドが実行されない場合であっても、出力リダイレクトを行います。

ls-F は、ファイル名をソートする際にファイル識別文字を組み込み ますが、ファイル名の中の制御文字を正しく処理できません。 これは割り込みができません。

visiblebell シェル変数は現在のところ実装され ていません。

ファイル名補完およびプログラミングされた補完においては、C 補完規則ワード・リスト・タイプでは、 指定のディレクトリーから補完が正しく選択されません。

tcsh シェルが正しくサポートしないロケール (コード・ページ) が 3 つあり ますが、それは IBM-1388 (中国語)、IBM-933 (韓国語) およ び IBM-937 (中国語 (繁体字)) です。

tcsh の保守およびテストに関するヘルプが必要な場合には、'subscribe tcsh' というテキストを含めたメール を listserv@mx.gw.com にお送りください。

関連情報

: (コロン)@ (at)aliasbgbreakcdcontinueechoevalexecexitfghistoryjobskillnewgrpnicenohupprintenvsetshiftstopsuspendtimeumaskunaliasunsetwait