Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux程序设计 ->正文

如何在.cshrc中判断是否在loginshell中?

来源:Linuxdby.com 作者:Webmaster 时间:2007-06-04 点击: [收藏] [投稿]
当有人这么问的时候,通常要问的是 

要如何判断是否是一个 interactive shell? 或是问要如何判断是否是 
最上层的 shell ? 

若你是要问 "是否在 login shell 中"(注:就是在做完 .cshrc 后,会 
再去做 .login),那么你也许用 "ps" 和 "$$" 随便弄一弄,就能知道了 
。因为通常 login shells 的名字在 "ps" 看起来都是由 '-' 做开头的。 
如果你是真的对另外两个问题感兴趣,那么这里有个方法可以让你在 
.cshrc 中判断。 

        if (! $?CSHLEVEL) then 
        # 
        # This is a "top-level" shell, 
        # perhaps a login shell, perhaps a shell started up by 
        # 'rsh machine some-command' 
        # This is where we should set PATH and anything else we 
        # want to apply to every one of our shells. 
        # 
            setenv CSHLEVEL 0 
            set home = ~username   # just to be sure 
            source ~/.env          # environment stuff we always want 
        else 
        # 
        # This shell is a child of one of our other shells so 
        # we don't need to set all the environment variables again. 
        # 
            set tmp = $CSHLEVEL 
            @ tmp  
            setenv      CSHLEVEL        $tmp 
        endif 

        # Exit from .cshrc if not interactive, e.g. under rsh 
        if (! $?prompt) exit 

        # Here we could set the prompt or aliases that would be useful 
        # for interactive shells only. 

        source ~/.aliases


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:我要如何将csh的stdout与stderr导向到不同的地方呢?   下一篇:在Bourneshellscript里要怎么找出最后一个参数?

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号