我总是遇到麻烦右心室安装和非交互式与交互式 shell 会话。如果会话不是交互式的,我通常会command not found
在 RVM/Ruby 工具链中的不同程序/函数上收到错误(即gem
,等等)。我知道有三种解决方案可以解决此问题rvm
:ruby
- 为每个用户添加/删除一些行
.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