#linux #ubuntu #ssh
#linux #ubuntu #ssh
Вопрос:
Мне нужно запустить эту команду с компьютера Ubuntu: ssh user@hostip "which mvn"
чтобы показать оправдываемый путь Maven, но он ничего не показывает
root@~: ssh user@hostip "which mvn"
root@~:
Я проверяю команду which mvn
на удаленном хосте, она показывает мне :
root@~: which mvn
/usr/share/mvn
root@~:
Я пытаюсь найти источник .bashrc
при выполнении команды excute ssh, но безуспешно:
root@~: ssh user@hostip ". ~/.bashrc;which mvn"
root@~:
В ./ bashrc также нет ничего о настройке пути maven
Итак, что я должен делать?
Комментарии:
1. Каков вывод ssh user@hostip «echo $PATH»,
which
команда поиска исполняемого файла в папках, указанных с помощью $PATH2. @Cody вам нужны одинарные кавычки для этого, или вы получите локальный путь.
Ответ №1:
root@~: ssh user@hostip "which mvn"
Когда вы запускаете ssh
и указываете команду для вызова в удаленной системе, ssh
по умолчанию не выделяется PTY (псевдо-TTY) для удаленного сеанса. Оболочки, подобные bash
, обнаружат, что они выполняются без TTY, и это изменит способ инициализации процесса оболочки.
В вашем случае любая команда, добавляющая «/usr /share» к вашему удаленному ПУТИ, вероятно, не выполняется для неинтерактивных сеансов (сеансов без TTY). Вероятно, вы можете решить эту проблему, сообщив ssh
запросить TTY для удаленного сеанса:
ssh -tt user@hostip "which mvn"
-t
Опция указывает ssh
запросить TTY для удаленного сеанса. Это приведет к тому, что ваш удаленный экземпляр оболочки инициализирует себя для интерактивного сеанса. Обратитесь к руководству по ssh для получения подробной информации о -t
опции.
Если это не решит проблему, вам нужно будет найти точку в файлах конфигурации вашей оболочки на удаленном сервере (.bash_profile, .bashrc и т.д.), Где /usr/share
добавляется к вашему пути, и убедитесь, что этот шаг выполняется для неинтерактивных сеансов.