在Shell脚本中,如何获取Ruby Gem可执行文件的当前目录



在macOS上,我想让我的 .zshrc自动将红宝石宝石可抛个性的当前位置添加到$路径变量。

目前我只是做:

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输出的特定格式的一种,我希望这可能会改变?

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

GEMS_DIR=$(gem env gemdir)/bin

最新更新