WEB开发网
开发学院WEB开发综合 如何在.cshrc中判断是否在loginshell中? 阅读

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

 2006-03-05 11:33:39 来源:WEB开发网   
核心提示:当有人这么问的时候,通常要问的是要如何判断是否是一个interactiveshell?或是问要如何判断是否是最上层的shell?若你是要问"是否在loginshell中"(注:就是在做完.cshrc后,如何在.cshrc中判断是否在loginshell中?,会再去做.login),那么你也许用&qu

当有人这么问的时候,通常要问的是要如何判断是否是一个 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 

Tags:cshrc login shell

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接