在 shell 脚本中,如何获取 ruby gem 可执行文件的当前目录?
In a shell script, how to get current directory of ruby gem executables?
在 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
输出的特定格式的格式,我希望它可能会改变?
gem help env
会告诉您 gem env
选项是什么。具体来说,看起来 gemdir
选项是你想要的,然后你追加 /bin
GEMS_DIR=$(gem env gemdir)/bin
在 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
输出的特定格式的格式,我希望它可能会改变?
gem help env
会告诉您 gem env
选项是什么。具体来说,看起来 gemdir
选项是你想要的,然后你追加 /bin
GEMS_DIR=$(gem env gemdir)/bin