В сценарии оболочки, как получить текущий каталог исполняемых файлов ruby ​​gem? - PullRequest
0 голосов
/ 21 февраля 2019

В 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 голосов
/ 21 февраля 2019

gem help env скажет вам, что такое опции gem env.В частности, похоже, что вам нужна опция gemdir, тогда вы добавляете /bin

GEMS_DIR=$(gem env gemdir)/bin
...