При выполнении сеанса SSH, который просто запускает команду вместо фактического подключения к вам, создается впечатление, что моя переменная окружения PATH отличается от того, когда я обычно подключаюсь к сеансу SSH, и в нем отсутствует местоположение моих двоичных файлов для команд bash. С чего бы это, и как я могу избежать этого?

Нормальное соединение: ssh root @ host Возвращает PATH env из

PATH = '/ SBIN:/ USR / SBIN:/ Proc / загрузки'

Команда ssh для выполнения команды, но не подключенная к терминалу (ssh root @ host ls), выдает «ls: команда не найдена». При дальнейшей проверке переменная окружения PATH отсутствует /proc /boot и, следовательно, отсутствует местоположение двоичного файла ls.

Окружение PATH этого «нетерминального» сеанса дает:

PATH = '/ USR / SBIN:/ SBIN'

но НЕ /proc /boot, поэтому он не может вызывать стандартные действия, такие как ls, mkdir и т. д.

Почему это? Как я могу получить свой правильный PATH, просто выполняя команду через SSH, но не подключаясь напрямую к отображаемому терминалу?

1 ответ1

1

Потому что в зависимости от типа сеанса (вход в систему / не вход в систему, интерактивный / неинтерактивный) ваш .profile или ваш .bashrc принимаются во внимание или нет.

Чтобы различать различные типы оболочек, смотрите здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .