Capistrano Док говоритInteractive Shell с Миной и Capistrano
ssh [email protected] "[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'"
Interactive
[email protected] $ ssh [email protected] "shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'"
Not login shell
Capistrano утверждают, что команда работает на SSH меня @ дистанционного управления в "Interactive и Non шелл". Очень хорошо, но вот моя точка зрения.
То, что я есть, я добавил простой тест в моей .bashrc, которые выглядят как этот
echo $-
# If not running interactively, don't do anything
case $- in
*i*) echo 'Interactive';;
*) echo 'Non Interactive';;
esac
Теперь, вместо двойных кавычек ("
) Я завернутые пример Capistrano в одинарные кавычки ('
), потому что я чувствовал, что двойные кавычки расширить выражение для текущей оболочки (в моем случае это мой ноутбук tty
терминала)
Результат:
ssh [email protected] '[[ $- == *i* ]] && echo "Interactive" || echo "Not interactive"'
hBc
Non Interactive
Not interactive
Question 1:
- Правильно ли находится код Capistrano doc ?. Глядя на мой результат выше, кажется, что команда запускается через ssh в неинтерактивной и не-login оболочке.
Question 2:
Если я прав (в вопросе 1), как я могу запустить команду в интерактивной оболочке ?. У меня было впечатление, что параметры -t
заставят выделить tty
, и это поможет. Но это тоже не помогает.
ssh [email protected] -t '[[ $- == *i* ]] && echo "Interactive" || echo "Not interactive"'
hBc
Non Interactive
Not interactive
Connection to remote closed.
Question 3:
Оригинальный вопрос сейчас. Я использую Mina для моего развертывания. Теперь во время мини-развертывания rvm никогда не загружается.
Причина моего Баш имеет следующие определения в Bashrc
# bashrc
case $- in #when mina load bashrc it's a non-interactive shell.
*i*) ;;
*) return;;
esac
source ~/.rvm/scripts/rvm # this is never gets executed
Question 4(a)
Как люди работают вокруг этой проблемы ?. Разумеется, перемещение исходной загрузки rvm в верхней части файла поможет, но я ищу другой ответ.
Question 4 b
: Как Капистрано и Мина справляются с этим. Если они могут?
Похоже, что связанные документы правильны: «По умолчанию Capistrano всегда назначает неинтерактивную, неинтерактивную оболочку». –