ホームディレクトリの下にある .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」がどこにあるか確認しましょう。
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」の設定ファイルを変更します。
設定ファイルと言っても、内容はただの csh スクリプトです。このため、 ~/.cshrc を更新したときは、一度ログアウトしログインし直すか、あるいは以下のコマンドを入力 しましょう。
source ~/.cshrc
ここでエラーが起こった場合は、以下のコマンドを入力することで、 エラーの発生場所が特定できます。
csh -fx ~/.cshrc
通常このファイルの中では、常に設定しておきたいことを記述しておきます。
ちなみに、書き換えた一例を載せておきます→「 .cshrc 」
パス名を記述は以下のようにします。ただし、「 path=( 」に空白を空けてはいけません。
set path=( パス名 )
スポンサードリンク
アプリケーションが異常終了した時( 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 では 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 でログアウトする機能は操作ミスでログアウトしてします 可能性があります。
Crtl-D でログアウトさせないためには、~/.cshrc に以下の一文を追加しましょう。
set ignoreeof
スポンサードリンク
スポンサードリンク