MacBook上RVM未将Gems安装至/bin目录的问题求助
看起来你遇到了RVM管理Ruby环境时,安装的Gems没有生成可执行文件到指定bin目录的问题——明明gem list能看到已安装的Gem,调用时却提示command not found,确实挺头疼的。下面是一步步的排查和解决方法:
1. 先确认RVM是否在当前Shell正确加载
RVM需要在Shell启动时初始化,否则会导致Gem路径关联异常。先执行这条命令检查:
rvm info
如果输出里的PATH没包含~/.rvm/gems/ruby-2.6.1/bin,说明RVM没正确加载。你可以手动加载试试:
source ~/.rvm/scripts/rvm
再跑一遍rvm info,看看路径是否正常了。另外要注意,macOS默认会优先加载.bash_profile而非.bashrc,如果你的RVM初始化代码只在.bashrc里,可能重启Shell后就失效了。可以检查下.bash_profile里有没有这行:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
没有的话加上,然后重启Shell就能让RVM自动加载了。
2. 重新安装有问题的Gems
你在cache目录看到的.gem文件只是安装缓存,不是实际安装后生成的可执行文件。试试卸载后重新安装,确保安装过程中生成可执行文件:
gem uninstall locksmith tuwaga gem-wrappers gem install locksmith tuwaga gem-wrappers
安装时留意输出,如果看到类似Installing executable locksmith的提示,说明可执行文件已经生成到~/.rvm/gems/ruby-2.6.1/bin目录了,这时候再去那个目录看看应该就有文件了。
3. 检查Gem的安装路径是否正确
有时候Gem的安装路径可能被意外修改,执行这条命令确认:
gem environment
看看INSTALLATION DIRECTORY和EXECUTABLE DIRECTORY是不是和你之前看到的一致。如果不一致,可以手动指定安装路径重新安装:
gem install locksmith --install-dir ~/.rvm/gems/ruby-2.6.1
不过正常情况下RVM会自动帮你设置这些路径,这一步算是兜底操作。
4. 确认PATH设置是否真的生效
你已经在.bashrc里加了PATH,但可能因为macOS的Shell配置文件优先级问题,这条设置没生效。先在当前Shell手动执行:
export PATH="$PATH:$HOME/.rvm/gems/ruby-2.6.1/bin:$HOME/.rvm/bin"
然后试试调用Gem的可执行文件,比如locksmith --version,如果能正常运行,说明是Shell配置文件的问题。这时候可以把PATH设置移到.bash_profile里,或者在.bash_profile里加一行:
source ~/.bashrc
这样就能让.bashrc里的配置生效了。
5. 重置RVM环境试试
如果上面的步骤都没用,可以试试重置RVM的环境设置,让它重新关联当前Ruby版本的路径:
rvm reset rvm use ruby-2.6.1 --default
这会重置RVM的环境变量,确保Gem路径被正确关联。
内容的提问来源于stack exchange,提问作者Jay Blanchard

