Mar*_*arc 47 rvm bash login .profile
对于 11.04,我重新安装了我的系统。该安装的一部分是安装rvm,它rvm.sh在/etc/profile.d/. 这不起作用,因为/etc/profile(加载每个 +r in /etc/profile.d/*.sh)没有被加载。根据文档,该配置文件仅在登录时运行 bash 时才来源。为了验证这一点,我调用了bash --login,之后rvm就可用了。
这在没有任何配置的以前版本的 Ubuntu 中对我有用。也就是说,全新安装的 10.10 将正确获取 profile/.d。
我的问题是:我做错了什么,还是在 Natty 中做出的一些新假设破坏了这一点?我目前的解决方法是source /etc/profilein ~/.bashrc(这很糟糕,因为配置文件是在bashrc之前加载的,但可以解决问题)。
les*_*ana 54
默认情况下,gnome-terminal 不会将 bash 作为登录 shell 启动(我假设您的意思是 bash 在 gnome-terminal 内启动)。这意味着 bash 不会读取/etc/profile或~/.profile. 正如您正确观察到的那样,如果作为登录 shell 启动,bash 将读取这些文件。
解决您的问题的快速方法是将 gnome-terminal 配置为将 bash 作为登录 shell 启动,以便它读取/etc/profile. 为此,您必须在可从编辑菜单访问的 gnome 终端“配置文件首选项”中启用“将命令作为登录外壳运行”。
我不建议这样做,因为这间食堂的区别~/.profile和~/.bashrc。理想情况下,~/.profile应该只在登录期间~/.bashrc做一次需要的事情,而应该做每次 bash 启动时都需要的东西。
超级用户有一个问答,讨论 bashrc 和 profile 之间的区别。阅读那里了解更多信息。
从您的问题描述来看,rvm 脚本似乎只需要在登录期间加载一次。据我所知,Ubuntu 已将图形登录配置为读取/etc/profile/和~/.profile. 这意味着,在注销并登录一次后,rvm 脚本应该处于活动状态。如果它仍然不起作用,那么可能需要为每个 bash 会话加载 rvm 脚本。如果是这种情况,那么bashrc脚本的位置更合适。
但是,有一个/etc/bash.bashrc 由 gnome-terminal 读取的文件,它是“用于交互式 bash(1) shell 的系统范围的 .bashrc 文件”。
我对 rvm 函数的调用[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"进入了那里,并且对于该系统上的几个用户来说效果很好。