Назад | Перейти на главную страницу

Интерпретация команд Linux Script не работает удаленно

У меня есть приведенный ниже сценарий Linux (упрощенный):

RUN_JAVA=$(which java)
if [ -z $RUN_JAVA ]
then
 echo "No Java found!" >> /tmp/output.txt
else
 echo $RUN_JAVA >> /tmp/output.txt
fi

Когда я запускаю его на том же хосте, он отлично работает, выводит в файл:

/ USR / Java / по умолчанию / bin / Java

Но когда я запускаю его с другого хоста:

ssh ${user}@${hotname} "/tmp/testRemote.sh"

Тогда он не может найти установку Java на этом хосте:

Java не найдена!

Что может быть причиной?

which не проверяет любой потенциальное местоположение, только местоположения в $PATH.

И Java не встречается в $PATH который устанавливается на удаленном хосте.

Причина в том, что ssh user@host command не создает сеанс входа в систему, но интерактивная сессия и bash (и, возможно, другие оболочки тоже) будут исходить из разных файлов для настройки вашей среды в зависимости от типа сеанса.

См. Раздел «ВЫЗОВ» в руководстве по bash, чтобы узнать о точных различиях, но, возможно, вы добавите /usr/java/default/bin/ к вашему PATH в ~/.bash_profile где ssh user@host command не загружает этот файл и использует только ~/.bashrc настроить среду.