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: あさだ たくや