.login,.logoutの両ファイルを利用することで,ログイン時とログアウト時に特定のコマンドを実行できる.これらのファイルは,ログインシェルと呼ばれるシェルでのみ実行される.
通常,CNSの標準X環境では`CONSOLE'ウィンドウがログインシェルになっている.リモートログイン時に実行されるシェルもログインシェルである.
なお,`CONSOLE'ウィンドウと他の`kterm'ウィンドウはログイン時に並列に起動されるため,.loginファイルの中に書いた環境変数の設定などは,``CONSOLE''以外の`kterm'ウィンドウでは有効にならないので注意が必要である.これは,環境変数は子プロセス(自分自身から起動したコマンド)には引き継がれるが,親プロセス(自分を起動したコマンド)や兄弟関係にあるプロセス,無関係なプロセスには影響を与えないためである.
自分で.xsessionファイルを記述している場合には,ktermやxtermをどれか1つ-lsオプションつきで起動するように設定しておく必要がある.通常,.xsessionの最後でexecで起動されるktermに-lsオプションをつける.
.loginファイルはログイン時にログインシェルで1度だけ実行されるシェルスクリプトである.通常シェルの利用環境は.cshrcファイルに設定するので.loginファイルにはログイン時に実行させたいコマンドのみを記述する(図3.2).
.loginファイルには絶対にX Window Systemを利用したアプリケーションの起動を記述しない.もし,ログイン時にそういったアプリケーションを起動したい場合は.xsessionファイルに記述する.
source /usr/local/lib/setup/.login # CNSの標準の設定を読み込む.消さないほうがよい. # ログイン時のメッセージを表示する. # !などの特殊記号を使う場合は\でエスケープすること. echo "hello\!\!" echo "I'm `hostname`." # 実行したいコマンドを記述する. date #日付を表示 from #メールが来ている場合には,そのリストを表示 |
.logoutファイルも.loginファイル同様にログインシェルでログアウト時に1度だけ実行されるシェルスクリプトである. .logoutは,ログアウト時に実行させたいコマンドを記述する(図3.3)..logoutファイルは標準では用意されていないので,設定を行いたいときはホームディレクトリの下に.logoutというファイルを作成する必要がある.
# ログアウトしたホスト名を表示する. echo "logout from `hostname`" # ログアウトしたホストと時間を.planというファイルに記録する. echo "Logout from `hostname` at `date`" > /.plan |
% finger -m t00000tf<RET>
Login name: t00000tf In real life: Tarou Fujisawa
Office: 79000000, 00
Directory: /home/t00000tf Shell: /bin/tcsh
Plan:
Logout from ccz00 at Fri Jan 17 08:52
% _
|