“将命令作为登录shell”做什么?
我安装了一些单独的程序,其中一些程序要求我进入我的GUI终端设置并启用/禁用“运行命令作为登录shell”选项以使其工作。
例:
我安装了Ruby on Rails 。 不幸的是,我必须进入终端选项并启用“运行命令作为登录shell”,因为它在我的PATH中。
在安装sexy-bash-prompt之前 ,这不是一个问题,只有在禁用该选项时才有效。
所以我的问题基本上是:“运行命令作为登录shell”是做什么的? 当你以登录shell运行时,是否有办法获取在禁用时运行的东西?
假设你的shell是Bash(Ubuntu中的默认值),这些是不同的:
-
当作为登录 shell运行时,Bash将在启动时读取
~/.bash_profile
(或者,如果不存在,~/.profile
)。 在某些情况下,此文件也会读取~/.bashrc
。 -
当作为非登录 shell运行时,Bash将读取
~/.bashrc
。
那么,为什么在作为登录/非登录shell运行时会看到不同的行为? 因为.bash_profile
/ .profile
与.bashrc
不同。
我建议您使用的解决方案是将自定义项复制到.bash_profile
/ .profile
,将它们粘贴到.bashrc
并禁用 “将命令作为登录shell运行”。