“将命令作为登录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运行”。