2012-07-17 115 views
0

任何人都可以告诉我什么是登录shell和交互式shell以及它们各自读取哪些配置(etc/profile,etc/bashrc,.bash_profile ...)?登录shell和交互式shell?

我看到这样的一些解释: 登录shell是其参数为零的第一个字符是 - 的一个,或者是一个以--login选项开头的登录shell。 一种交互式外壳是一个没有非选项参数和 开始,而不需要-c选项,其标准输入和错误都连接到 终端(如通过isatty(3)确定),或者一个开始与-i 选项。 PS1被设置,$ - 包括我如果bash是交互式的,允许 shell脚本或启动文件来测试这种状态。

但是,这更困惑!

回答

1

系统上的man bash命令(INVOCATION部分)将介绍所有这些内容,并介绍在何时读取哪些文件。

+0

感谢您的提示,但是当我调用bash(已经登录)时,它是一个交互式shell,它应该读取.bashrc的权利?但我的.bashrc不是,除非我手动来源。我不知道为什么? – shi70 2012-07-17 04:05:09

+0

是的,应该在这一点上阅读。它是否直接位于你的主目录('ls〜/ .bashrc')?是否有任何'BASH_ *'种类的环境变量被设置? “bash”究竟是如何调用的,以及从哪里('哪个bash')? – 2012-07-17 04:14:47

0

那么,如果你不信任手册页,请尝试使用strace。

strace -o/tmp/tr -f bash 
exit 
grep open /tmp/tr | grep $HOME 

对于我来说,这表明:

18316 open("/home/sethrobertson/.bashrc", O_RDONLY) = 3 

是什么显示你?