Уважайте rbenv при запуске команд через ssh - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть безголовая виртуальная машина Ubuntu 18.04, где я устанавливаю приложение Rails поверх rbenv.

Я хочу иметь возможность автоматизировать некоторые административные операции, чтобы я мог запускать их локально и выполнять свой скрипт команды над s sh. Однако, когда я делаю это, я получаю систему ruby вместо rbenv ruby. Если я sh прямо в поле, то я получаю правильный rbenv ruby.

Пример:

ubuntu:~$ cat show-ruby.sh
which ruby
ruby --version
ubuntu:~$ bash show-ruby.sh
/home/ubuntu/.rbenv/shims/ruby
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
laptop:~$ ssh ubuntu 'bash show-ruby.sh'
/usr/bin/ruby
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

rbenv инициализируется в моем .bashrc файле :

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Поэтому я попытался добавить source ~/.bashrc в начало моего show-ruby.sh тестового скрипта, но это не имеет значения. Любые идеи о том, как заставить мои удаленно выполняемые сценарии уважать мой установленный rbenv ruby?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Просто добавьте файл. ruby -version с необходимой версией ruby, и rbenv автоматически установит ruby версию

[current] > cat .ruby-version
2.4.6
[current] > rbenv version
2.4.6 (set by .ruby-version)
0 голосов
/ 19 марта 2020

rbenv запускается из инициализации, установленной в .bashrc. Однако эта инициализация происходит только для интерактивной оболочки. Вы можете заставить оболочку bash быть интерактивной с флагом -i:

laptop:~$ ssh ubuntu 'bash -i show-ruby.sh'
/home/ubuntu/.rbenv/shims/ruby
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
...