如何强制RubyGems将可执行文件安装至$HOME/.local/bin,并指定Jekyll安装至$HOME/local/bin?
解决RubyGems可执行文件路径固定问题
我之前也被Ruby版本变动导致gem可执行文件路径跟着变的问题折腾过,刚好能给你两个靠谱的解决方案:
一、全局配置:让所有RubyGems可执行文件默认安装到$HOME/.local/bin
有两种方式可以实现全局生效:
1. 修改gem配置文件
直接编辑RubyGems的配置文件~/.gemrc(如果没有就新建一个),添加可执行文件目录的配置:
echo 'gem: --executable-dir=$HOME/.local/bin' >> ~/.gemrc
或者手动打开~/.gemrc文件,写入以下内容:
gem: --executable-dir=$HOME/.local/bin
这样以后所有gem install命令都会自动把可执行文件放到$HOME/.local/bin,不用每次手动指定。
2. 通过环境变量全局生效
如果你不想修改配置文件,可以设置环境变量GEM_OPTS,把参数默认传进去:
export GEM_OPTS="--executable-dir=$HOME/.local/bin"
为了让这个设置每次终端启动都生效,把上面的命令加到你的~/.bashrc、~/.zshrc或者对应的shell配置文件里,然后执行source ~/.bashrc(或者对应的配置文件)让改动立即生效。
二、单次安装:仅针对Jekyll指定安装路径
如果只是想单独给Jekyll指定路径,不用全局修改配置,直接在安装命令里加上--executable-dir参数即可:
gem install jekyll --executable-dir=$HOME/.local/bin
执行这个命令后,Jekyll的可执行文件就会直接放到$HOME/.local/bin,而不是$HOME/.gem/ruby/3.0.0/bin这种和版本绑定的目录里。
重要补充:确保$HOME/.local/bin在PATH中
不管用哪种方法,都要确保$HOME/.local/bin在你的系统PATH环境变量里,不然终端找不到安装后的命令。可以先检查:
echo $PATH
如果输出里没有$HOME/.local/bin,把下面的命令加到shell配置文件(~/.bashrc/~/.zshrc)里:
export PATH="$HOME/.local/bin:$PATH"
然后执行source命令让配置生效。
内容的提问来源于stack exchange,提问作者Dilawar
相关产品推荐
相关产品推荐

