“将命令作为登录shell运行”有什么作用?


28

我安装了一些单独的程序,其中一些需要我进入GUI终端设置并启用/禁用“将命令作为登录外壳程序运行”选项,才能使其中任何一个正常运行。

例:

我安装了Ruby on Rails。不幸的是,我必须进入终端选项并启用“将命令作为登录外壳程序运行”,以使其位于我的PATH中。

在我安装了sexy-bash-prompt之前,这并不是什么大问题,它仅在禁用该选项时才起作用。

所以我的问题本质上是:“将命令作为登录Shell运行”是做什么的?当您以登录shell身份运行时,是否有一种方法可以让它在无法运行的情况下运行?

Answers:


31

假设您的shell是Bash(Ubuntu中的默认设置),则有以下区别:

  • 作为登录 shell 运行时,Bash将在启动时读取~/.bash_profile(或者,如果不存在~/.profile)。在某些情况下,该文件~/.bashrc也会读取。

  • 作为非登录外壳运行时,Bash将读取~/.bashrc

那么,为什么以登录/非登录外壳运行时会看到不同的行为?因为您.bash_profile/ .profile所做的与您所做的不同.bashrc

我建议您使用的解决方案是将对/ 所做的自定义复制.bash_profile/ .profile,将其粘贴.bashrc禁用 “作为登录外壳运行命令”。


好的 我认为这与读取的登录配置文件有关(将.bashrc用作源可修复我遇到的一些问题)。我会努力的,对这个可怕的书面问题深表歉意。
AlbertEngelB

感谢您的简洁解释。看到人们只是将自定义项保存在.bashrc中并拥有.bash_profile来获取.bashrc的情况并不少见。登录特定的自定义项应仅保留在.bash_profile中。
MichaelZ 2015年

1
为什么不只是将.bashrc来源到.bash_profile中,而保留登录shell?那可行吗?
Nefario博士16年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.