问题
when you have something like..
given inside projectx an .rvmrc file specifying ruby 1.9.2 and having two rubies on my system (ree-1.8.7 and ruby1.9.2)
#!/bin/bash
cd applications/projectx
which ruby
ruby -v
the last two lines output ree-1.8.7 and its path which was not I intended to use.
回答1:
Yes
Rvm does define a wrapper around cd
that looks like this:
cd ()
{
builtin cd "$@";
local result=$?;
__rvm_project_rvmrc;
__rvm_after_cd;
return $result
}
It's difficult to tell why your .rvmrc
isn't working. Rvm does support project-specific .rvmrc
files, but you didn't post yours.
回答2:
You need to source rvm inside your script, when you run a script it doesn't load your .bashrc
. Simply add a line like
[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm
to the start of your script.
回答3:
If you are using RVM 1.7.0 or later you need to enable project specific .rvmrc files by adding this line to ~/.rvmrc (or system .rvmrc):
rvm_project_rvmrc=1
See: https://rvm.io/workflow/rvmrc/
来源:https://stackoverflow.com/questions/6529964/does-cd-command-in-a-shell-script-load-the-rvmrc-inside-the-destination-director