Subject: How do I tell inside .cshrc if I'm a login shell?
Date: Thu Mar 18 17:16:55 EST 1993
2.10) ログインシェルにいる時に、.cshrc の中からそれを知らせるにはどう
すれば良いのですか。
この質問は、通常次のどちらかの意味でしょう。
- 対話的なシェルかどうか知るにはどうすれば良いのでしょうか。
- 又は、
- 一番上のシェルかどうか知るにはどうすれば良いのでしょうか。
シェルが本当にログインシェル (.cshrc の実行が終った後、.login を実行す
る) かどうかはだけなら、"ps" と "$$" を使ってみれば判定できるでしょう。
ログインシェルは一般的に "-" で始まるプロセス名になっています。もし、
あなたが上の二つの質問に興味があるなら、それを知るために .cshrc に書き
入れる方法の一つを示します。
if (! $?CSHLEVEL) then
#
# これはトップレベルのシェルです。
# 恐らくはログインシェルか"rsh machine some-command"
# で立ちあげられたシェルでしょう。
# これはPATHなどシェルの全てに適用したいものを設定
# しなければならない場所です。
setenv CSHLEVEL 0
set home = ‾username # これはまさにここで
source ‾/.env # いつも使う環境
else
# これは他のシェルの子なので、全ての環境変数を再び設定する
# 必要はありません。
#
set tmp = $CSHLEVEL
@ tmp++
setenv CSHLEVEL $tmp
endif
# rshなど、対話的でないシェルなら.cshrcから抜ける
if (! $?prompt) exit
# ここで対話的なシェルだけに有用なプロンプトやエイリアスの
# 設定をします。
source ‾/.aliases
UNIX FAQ LIST / Copyright(c)1994,Ted Timar / tmatimar@isgtec.com
Maintainer:
あさだ たくや