.cshrcのカスタマイズ tcshを覚える



ホームディレクトリの下にある .chsrc というのは、csh run command の略です。 これは、シェルが起動するたびに読み込まれる設定ファイルです。

具体的には、ターミナル (kterm など) を起動したり、slogin や ssh 、 rlogin などでログインした場合に、 このファイルに書いてあることが実行されるというわけです。

スポンサードリンク

Linuxでは「bash」、BSD系UNIXでは「csh」と呼ばれるシェルがデフォルトのシェルになっていますが、これを使い続けなければならないということはありません。

名称 特徴
ash 軽量のsh互換シェル。シェルスクリプト実行用
sh Bourneシェルと呼ばれるUNIX最初期のシェル
ksh SystemVでの標準シェル。コマンドライン編集機能あり
bash Bourneシェルコマンドライン編集機能を加えたもの。Linuxの標準シェル
csh BSD系UINIXで生まれたシェル。shをBシェル、cshをCシェルと呼ぶ。
newcsh cshに対話的編集機能を追加したもの
tcsh cshにファイル名補完、コマンドライン編集機能などを追加したもの
zsh ksh+tcshの形で開発されたもの。/sh/csh/tcsh/bashの機能をほぼ全て持つ

シェルは「bash」「zsh」「tcsh」から選ぶのが妥当だと思います。 ここでは、「tcsh」について記述します。

tcsh 利用のための設定方法

まずは自分がどのシェルを利用しているのか確認しましょう。 また「tcsh」がどこにあるか確認しましょう。

echo $SHELL

利用できるシェルの一覧は次のコマンドで確認できます。

chsh -l

csh がデフォルト設定の方は「.login」の最後に以下の命令を追加します。 (tcsh が 「/usr/local/bin/」にある場合 )

exec /usr/local/bin/tcsh

また bash がデフォルト設定の方は「.bashrc」の最後に以下の命令を追加します。 (tcsh が 「/bin/」にある場合 )

exec /bin/tcsh

※ root権限がある場合は「/etc/passwd」の設定ファイルを変更します。

~/.chsrc ファイルで環境設定

設定ファイルと言っても、内容はただの csh スクリプトです。このため、 ~/.cshrc を更新したときは、一度ログアウトしログインし直すか、あるいは以下のコマンドを入力 しましょう。

source ~/.cshrc

ここでエラーが起こった場合は、以下のコマンドを入力することで、 エラーの発生場所が特定できます。

csh -fx ~/.cshrc

通常このファイルの中では、常に設定しておきたいことを記述しておきます。

ちなみに、書き換えた一例を載せておきます→「 .cshrc

パス設定

パス名を記述は以下のようにします。ただし、「 path=( 」に空白を空けてはいけません。

set path=( パス名 )

スポンサードリンク

コア ( .core ) ファイルを作らないようにする

アプリケーションが異常終了した時( Segmentation fault )に .core という 名前のファイルが作成されます。

通常、このファイルはサイズも大きく利用することはありません。 ~/.chsrc に以下の一文を追加しましょう。

limit coredumpsize 0 

プロンプトに表示される文字の変更

ターミナルに表示されるプロンプト(コマンド入力待ちのときに表示する文字列)を変更して、使いやすくしましょう。

これには、prompt コマンドを利用します。たとえば、以下のように 入力すると、プロンプトが「hoge」に変わります。

$ set prompt="hoge "
hoge _

また「%」で始まる文字は特殊な役割があります。以下主なものを紹介します。

文字名説明
%c カレントディレクトリの最後のディレクトリ名。
%m マシン名
%n 自分のアカウント名(もしくは %USER )
%/ 現在ユーザーが作業しているディレクトリ
%# スーパーユーザー(root)ならば「#」、一般ユーザーならば「>」を表示
%t am/pm 表記による、時:分:秒の表示
%T 24時間表記による、時:分:秒の表示
%! ヒストリ番号を表示(もしくは \!、 %h)

加えて、表示方法も変更することができます。

文字名説明
%S 反転表示開始 (%s で終了)
%B 太字(bold)表示開始(%b で終了)
%U 下線(アンダーライン)表示開始(%u で終了)

エスケープシーケンスを利用することで、プロンプトの一部分に色をつけることもできます。

番号 文字の色 番号 背景の色 属性 内容
30 ブラック(黒) 40 ブラック(黒) 00 なし
31 レッド(赤) 41 レッド(赤) 01 ボールド(明るくする)
32 グリーン(緑) 42 グリーン(緑) 02 取消線を付ける
33 イエロー(黄) 43 イエロー(黄) 04 アンダースコア(下線を付ける)
34 ブルー(青) 44 ブルー(青) 05 ブリンク(点滅する)
35 マゼンタ(紫) 45 マゼンタ(紫) 07 リバース(反転表示する)
36 シアン(水色) 46 シアン(水色) 08 非表示
37 ホワイト(白) 47 ホワイト(白)

%{と%}で囲んだ中に\e(\33、^[)で始めて記述します。

%{ … これより非表示文字
%} … ここまで非表示文字

実際の記述方法は、以下のようになります。

\33[属性;文字の色;背景の色m \33[0m

以上の内容を組み合わせて使用すると、次のようになります。

$ set prompt="%{\e[01;34m%}%n@%m:%c[\!]%{\e[0m%} "
hoge@cygwin:~[1] _

tcshは、プロンプトの文字数を考慮して、コマンドがウィンドウの端まで行った時 の折り返しを行います。

エスケープシーケンスは実際に表示されるわけではないので、%{と%}で囲んで 非表示文字であることを示さなければ、動作がおかしくなるので注意しましょう。

お気に入りのプロンプトが決定したら、~/.cshrc に記述することで以降反映 されます。

ファイルのリスト補間を行う

bash では [TAB] キーを押すことで、ファイルの一覧を表示してくれます。 これはキー入力する上で非常に便利な機能です。

$ /(TAB を押す)
bin/         cygwin.bat~  etc/   lib/   setup.log       tmp/  var/
cygwin.bat*  cygwin.ico   home/  sbin/  setup.log.full  usr/

tcsh は標準では一覧を表示することはできません。~/.cshrc に以下の一文を追加 しましょう。

set autolist

逆に、ファイル補間をしたくないファイルがある場合は、 ~/.cshrc に以下の一文を追加しましょう。(例:*.o、*~、*.aux、*.log ファイル)

set fignore = (.o \~ .aux .log)

これにより、「Ctrl-D」や「TAB」 によるファイル補完が制限されます。

$ ls 
hoge.c  hoge.o  hoge.c~
$ emacs ho (Ctrl-D を押す)
$ emacs hoge.c _

ファイルのリスト補間を行う(csh の場合)

csh では ESC キーを押すことでファイル名の補完ができます。

set filec
$ ls 
hoge.c  test.c  a.out
$ emacs ho (ESC を押す)
$ emacs hoge.c _

入力名修正

tcsh では [TAB] キーを押すことで、ファイル名・ディレクトリ名 を修正してくれる方法もあります。

$ cd /usr/locla/bin (TAB を押す)
$ cd /usr/local/bin/ _

これを行うには、~/.cshrc に以下の一文を追加しましょう。

set autocorrect 

ヒストリの保存数変更

ヒストリに保存するコマンドの最大数を指定するには、 ~/.cshrc に以下の一文を追加しましょう。(例:1000 個のコマンドを記憶)

set history 1000

ただしこのままでは、一度シェルを終了すると全て忘れてしまいます。

これを防ぐには、以下の一文を ~/.cshrc に追加します。

set savehist=1000

これによりヒストリが ~/.history に書き込まれます。次回 シェルを 起動したときに ~/.history が読みこまれて、前回のヒストリ情報を引き続き使うことができます。

ただし、ターミナルを複数開く場合は、上記の方法ではターミナルごとに 上書きされてしまいます。

各ターミナルの全ヒストリを保存しておくには、先ほどの一文を以下のように 修正します。

set savehist = (1000 merge)

これにより、全てのシェルのヒストリがマージされて保存されます。

Ctrl-D でログアウトしないようにする

普通、補完や文字削除で Ctrl-D を多用するため、 デフォルト仕様である Ctrl-D でログアウトする機能は操作ミスでログアウトしてします 可能性があります。

Crtl-D でログアウトさせないためには、~/.cshrc に以下の一文を追加しましょう。

set ignoreeof 

スポンサードリンク

スポンサードリンク