禁用登录处理的差异(非交互式、交互式等等)

禁用登录处理的差异(非交互式、交互式等等)

我总是遇到麻烦右心室安装和非交互式与交互式 shell 会话。如果会话不是交互式的,我通常会command not found在 RVM/Ruby 工具链中的不同程序/函数上收到错误(即gem,等等)。我知道有三种解决方案可以解决此问题rvmruby

  • 为每个用户添加/删除一些行.bashrc。更改取决于 Ubuntu 版本
  • bash --login在使用 RVM 之前输入内容以获取交互式 shell
  • 更改 gnome-terminal 中的“以登录 shell 身份运行命令”选项

所有这些解决方案都不是我所寻找的,因为我有几个主机安装了不同版本的 Ubuntu,并且对于某些应用程序,上述解决方案不起作用(即守护进程Chef 配置管理套件)。据我所知,问题出在/etc/profile.d只有用户登录到交互式 shell 会话时,shell 脚本才会运行。如果运行的是守护进程,或者我或应用程序通过 ssh 登录,情况似乎并非如此。

我基本上正在寻找一种方法来统一所有不同类型的 shell 会话以执行脚本/etc/profile.d。理想情况下,此解决方案应适用于所有能够登录的用户以及不同版本的 Ubuntu(目前使用的版本:10.4、11.10)。如果可以使用自动脚本或 Chef 配方轻松设置它,那就太好了。

需要注意的是:我不知道不运行脚本是否/etc/profile.d是我面临的唯一问题,但我知道这样做bash --login通常可以解决我的问题。

答案1

您的问题是 gnome-terminal--login默认不使用 bash: https://rvm.io/integration/gnome-terminal/

要使用 RVM 编写脚本,请选择此处描述的方法之一:https://rvm.io/integration/cron/

这里有更多关于用户 rc 文件的信息: https://rvm.io/support/faq/#shell_login

相关内容