LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 958|回复: 3

关于login shell和non-login shell[已解决]

[复制链接]
发表于 2008-10-20 10:44:53 | 显示全部楼层 |阅读模式
Invoked as an interactive login shell, or with --login
When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

When a login shell exits, Bash reads and executes commands from the file ~/.bash_logout, if it exists.

Invoked as an interactive non-login shell
When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force Bash to read and execute commands from file instead of ~/.bashrc.

So, typically, your ~/.bash_profile contains the line

     if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

after (or before) any login-specific initializations.



以上是manual对于bash的描述中的一段。其中讲到当bash是作为login shell时,执行/etc/profile然后是~/.bash_profile, ~/.bash_login, 和 ~/.profile的存在的第一个。但是事实上之后也会执行~/.bashrc,就是事实上无论是login shell和non-login shell都会执行~/.bashrc,即使.bash_profile里没有" if [ -f ~/.bashrc ]; then . ~/.bashrc; fi "这一段。



我的问题是:

为什么login shell的描述中不写之后会执行.bashrc呢?可能是我没有理解手册的意思。大家说说意见!
发表于 2008-10-20 19:07:30 | 显示全部楼层
并不是每个发行版的 bash_profile 的写法都相同的,有些会引入 bashrc,有些则不会!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 09:54:39 | 显示全部楼层
哦,是这样啊,明白了
回复 支持 反对

使用道具 举报

发表于 2008-10-24 13:15:44 | 显示全部楼层

如何识别linux中用的是硬件狗还是软件狗

如何识别linux中用的是硬件狗还是软件狗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表