У меня проблема с удаленным запуском команды через неинтерактивный сеанс S SH в Ubuntu 14.04. сервер.
Я хочу запустить команду связки для выполнения сборки Jekyll. Если IS SH в интерактивную оболочку на моем сервере, используя ssh username@address
, и запустите:
cd /jekyll/site/dir ; /root/gems/bin/bundle exec jekyll build --incremental
Он работает успешно. Однако, если я попытаюсь запустить это с моего локального компьютера:
ssh username@address "cd /jekyll/site/dir ; /root/gems/bin/bundle exec jekyll build --incremental"
, произойдет сбой. Я видел другие проблемы, такие как
, которые объясняют, что в неинтерактивном сеансе среда может быть не задана так же, как интерактивный сеанс по умолчанию.
Я попытался добавить источник в удаленную команду, чтобы учесть это:
ssh username@address "source /root/.profile ; source /root/.bashrc ; cd /jekyll/site/dir ; /root/gems/bin/bundle exec jekyll build --incremental"
Тем не менее, команда bundle
работает неправильно. Фактическая ошибка, которую я получаю:
/root/gems/bin/bundle:15:in `<main>': undefined method `b' for "exec":String (NoMethodError)
from /root/gems/bin/ruby_executable_hooks:24:in `eval'
from /root/gems/bin/ruby_executable_hooks:24:in `<main>'
Таким образом, проблема, похоже, имеет отношение к bundle / RVM, и, возможно, есть кое-что из среды, которое я до сих пор пропускаю. Я попытался выполнить поиск в Интернете, чтобы определить причину этой ошибки, но мне не удалось точно определить проблему.
Если я cd
попал в каталог сайта Jekyll в интерактивном сеансе, это означает, что
"RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,"
и так далее. Возможно, это как-то связано с тем, что RVM / Ruby / что-то переопределяет команду cd
для запуска этого процесса, и, возможно, она не делает то же самое в неинтерактивном сеансе?