環境のカスタマイズ

ログイン .login .cshrc

環境変数の設定 PATHの設定 特殊なシェル変数path 特殊なシェル変数prompt
aliasコマンド 様々な alias aliasを一時的に無効にする

特殊なコマンド umask limit source がcshrcにあるのは? cshrcの一部を無効にしたい
その他 FAQ 練習問題


ログイン

UNIX では、セッションを開始するために、まずログインします。 話を簡単にするために、ログイン・シェルを csh とします。
基本環境では、ログインすると次の環境変数が初期設定されます。 これ以外の環境をカスタマイズするためには、以下の設定ファイルを使います。 これらはシェルスクリプトと同様 csh のコマンドで書かなければなりません。

.login

セッションを開始するとき、一度だけ実行されるスクリプトです。 ただし、.cshrc が実行された後に実行されます。
  1. prompt の設定
  2. history の設定
  3. stty の設定

以下にお奨めの設定を示します。


unset autologout
unset noclobber
stty erase "^H" kill "^U" intr "^C" susp "^Z"
stty -istrip
set filec
set prompt="`hostname` `whoami`:\!] "

説明

unset autologout 自動ログアウトを設定しない。
unset noclobber すでにあるファイルに対する書き込みを禁止しない。
stty erase "^H" 端末のキィーを設定する。
stty -istrip 入力文字を 7 ビットにストリップしません。 つまり8ビットそのまま通します。
(日本語を使うときは必須です)
set filec 一部を入力したファイル名またはユーザ名を自動拡張します。
ESC 文字で自動拡張、CNTL.D でリストを表示します。
set prompt = "`echo ``hostname`-\!] " コマンドプロンプトを設定します。

.cshrc

各 csh の初期設定コマンド用のスクリプトです。
  1. TERM の設定
  2. LANG の設定
  3. PATH の設定
  4. MANPATH の設定
  5. LD_LIBRARY_PATH の設定 (共有ライブラリのパス指定)
  6. CLASSPATH の設定 (java を使う場合)
  7. 様々な alias

以下にお奨めの設定を示します。


setenv TERM             vt100
setenv LANG             ja
setenv MHOME            $HOME
set OSNAME = `uname`
switch ($OSNAME)
    case "SunOS":     # OS=solaris
    setenv MANPATH              "/usr/openwin/man:/opt/SUNWspro/man"
    setenv LD_LIBRARY_PATH      "/opt/SUNWspro/lib:/usr/openwin/lib:/usr/dt/lib:
    breaksw

  case "HP-UX":       # OS=HP-UX
    setenv MANPATH      "/opt/ansic/share/man:/opt/imake/man"
    setenv LD_LIBRARY_PATH      "/usr/lib:$MHOME/tool/libpcap-0.4"
    breaksw

  case "AIX":         # OS=AIX
    set path = (. /opt/ansic/bin $path)
    setenv MANPATH      "/opt/ansic/share/man:/opt/imake/man"
    setenv LD_LIBRARY_PATH      "/usr/lib:$MHOME/tool/libpcap-0.4"
    breaksw

  case "Linux":       # OS=Linux
  default:
    setenv LD_LIBRARY_PATH      "/usr/lib"
    setenv MANPATH      "/opt/ansic/share/man:/opt/imake/man"
    breaksw
endsw
source $HOME/.aliases




環境変数の設定

環境変数は、実行するコマンドに渡される変数です。 大抵は、コマンドが要求するもので、設定は以下のようにします。

setenv <変数名> <値>

例えば、環境変数 LANG を"ja"としたいなら、以下のようにします。

setenv LANG ja

ちなみにこれは、ロケールを ja つまり日本にします。

環境変数PATH類の設定

環境変数PATHを設定する場合は、次のようにします。

setenv PATH < PATH 1>:< PATH 2>:...< PATH N>

また、これに追加したい時には次の二通りのいづれかを使います。

setenv PATH ${PATH}:< PATH a>:...
setenv PATH < PATH a>:...:< PATH x>:$PATH

環境変数の主なものは、次のとおりです。

PATH コマンドへのパス
LD_LIBRARY_PATH 動的リンクを行う際の共有ライブラリへのパス
MANPATH オンラインマニュアルへのパス

特にPATHとMANPATHは覚えておきましょう。

特殊なシェル変数 path

シェル変数とは、cshでのみ有効な変数で、 環境変数のように実行するコマンドに渡されません。 大抵はシェルスクリプト実行において利用されますので敢えてここでは述べませんが、 pathだけは少し違って、環境変数PATHと連動していますので、 pathでPATHを設定しても良いのです。 この方が折り返しが楽なので、こちらを推奨します。 設定方法は、以下のとおりです。

set path = ( < PATH1> ... )

set path = ( $path <PATH a> ... )
set path = ( < PATH a> ... $path )

シェル変数 prompt

promptは、プロンプト文字列を指定します。 例えば

set prompt = "`hostname`-\!]"

としてみましょう。

また、tcshでは、"%+文字"を使った設定が可能です。




aliasコマンド

aliasコマンドで、コマンド名の短縮などが可能です。

alias <エイリアス名> <本物のコマンド名など>...

たとえば、"cdoh"を"cd $ORACLE_HOME"としたいなら、以下のようにします。

alias cdoh cd $ORACLE_HOME

様々な alias

以下にお奨めの alias を示します(.aliases)。


alias cd            "cd \!*;pwd"
alias fnd           "(find . -name \!* >/dev/tty) >& /dev/null"
alias ftp           "ftp -i"
alias h             "history"
alias lc            "ls -aCFb \!*"
alias ll            "ls -alFb \!*"
alias lr            "ls -aCFR \!*|more"

alias を一時的に無効にする

"rm"を"rm -i"とすると、本当に消して良いかを常に問われますが、 大量のファイルを消したいが消して良いかを聞かれるのは面倒というときには、 もとの"rm"つまり"-i"オプションを消したくなります。このとき、

\rm *
としてみましょう。 これで、aliasが一時的に無効になり、そのコマンドに限り外れますので、 その後は、また"-i"オプションが付いた状態になります。




特殊なコマンド

umask - ファイルモード生成マスクの獲得と設定

ファイルのパーミッションのうち、閉じておきたいビットを示します。 以下の設定で、他人に書き込みを許さないようになります。

 > umask 022
 > touch a
 > ls -l a
-rw-r--r--   1 taka     dba            0  4月 12日  15:42 a

読まれるのも、コマンドの実行も嫌なら、以下のようにします。

 > umask 077
 > touch b
-rw-------   1 taka     dba            0  4月 12日  15:43 b

limit - システム資源の制限値を設定または取得

limit coredumpsize 0
プログラムが不正終了した時に coreファイルを吐きますが、それを抑制します。

"source" が .cshrc にあるのは?

source <ファイル名>

となっていると、その行に指定したファイルを取り込んだような格好になります。 通常 setenv などはそのスクリプト内でだけ有効となりますが、 source でスクリプトを実行すると、そのセッション中ずっと有効となります。

.cshrc の一部を一時的に無効にしたい

なにか「実験」をする場合などでは、一時的に特定行を無効にしたくなると思います。 いくつかの方法があります。

  1. 行頭に'#'を付けて、そこをコメント行にする。 コメント行は実行されない、というのを利用するわけです。
  2. 消すのは "un+ コマンド" 利用方法は全て同じです。
    <コマンド> <設定した変数またはエイリアス>




その他

FAQ

  1. 日本語入力すると、文字化けしてしまいます。どうすればよいでしょうか?

【 解答 】

  1. .login に以下を追加します。
    stty -istrip

【 練習問題 】

  1. ログインして設定されている環境変数を表示しましょう。
  2. ここに出てきたコマンドを man で確認しましょう。


【 コマンド 】

login(1),csh(1),ksh(1),sh(1) stty(1) echo(1) hostname(1) uname(1) env(1) touch(1) rm(1)

【 csh コマンド 】

alias,unalias limit rehash setenv,unsetenv source umask