.cshrcのカスタマイズ

ホームディレクトリの下にある .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


戻   る