在shell脚本中,如何获取ruby gem可执行文件的当前目录?

时间:2019-02-21 13:21:54

标签: ruby shell rubygems zsh

在macOS上,我想让.zshrc自动将ruby gem可执行文件的当前位置添加到$ PATH变量中。

目前我只是这样做:

if [ -d "/usr/local/lib/ruby/gems/2.6.0/bin" ]; then
    export PATH="/usr/local/lib/ruby/gems/2.6.0/bin:$PATH"
fi

但这不是很适合未来,是吗?例如,在我的下一个macOS安装中,Ruby的版本可能会有所不同。

我知道,可以使用以下命令获取正确的目录

$ gem env

  . . .

  - EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.6.0/bin

  . . .

所以我这样修改了脚本:

GEMS_DIR=${"$( gem env | grep 'EXECUTABLE DIRECTORY' )"#"  - EXECUTABLE DIRECTORY: "}
if [ -d "$GEMS_DIR" ]; then
    export PATH="$GEMS_DIR:$PATH"
fi

现在可以使用。

但是问题是,有没有更好的方法? 最好是不依赖gem env输出的特定格式的格式,我希望它会改变吗?

1 个答案:

答案 0 :(得分:5)

gem help env将告诉您gem env选项是什么。具体来说,看起来gemdir选项就是您想要的,然后附加/bin

GEMS_DIR=$(gem env gemdir)/bin