在我的 .profile 中我有以下命令,
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
现在,为了获得我想要的行为,我必须source ~/.profile
在终端中输入。我希望这是自动的(因为它在 .profile 中),但事实并非如此。有什么想法吗?
当我登录时,我的 .profile 正在被执行(用 测试过export foo=bar
)。
答案1
~/.profile
不仅由 bash 使用,还由其他 posix shell 使用。当您在 Ubuntu 中以图形方式登录时,~/.profile
会从 获得源代码sh
,而没有[[
或source
。
编辑
在对这个 rvm 内容进行一些 google 搜索之后,发现它似乎是一个 bash 脚本,因此切换到 posix sh 语法将不起作用;该脚本根本不属于~/.profile
。
解决这个问题的一种方法是改为从源中获取它~/.bashrc
。 缺点是,无论它设置什么环境变量,都只能用于 bash shell。 例如,依赖于这些环境变量的命令不能直接从启动器运行。