Почему мои rc-файлы не загружаются при вложении вызовов ssh? - PullRequest
0 голосов
/ 06 июля 2019

Когда я запускаю

ssh user1@server1 'ssh user2@server2'

Я могу войти, но мои rc-файлы не загружаются.Даже когда я source .zshrc у меня все еще есть пустое приглашение и никакого цвета.Я даже попробовал exec zsh и exec bash как запасной вариант, но ничего не изменилось.Что здесь происходит и как я могу это исправить?

1 Ответ

1 голос
/ 06 июля 2019

Как избежать проблемы

Во-первых, не делайте этого.Вместо этого используйте встроенную поддержку ProxyJump в ssh:

ssh -o 'ProxyJump user1@server1' user2@server2

Вы можете даже сделать это автоматическим для всех подключений к server2, добавив в файл ~/.ssh/config что-то вроде следующего:

Host server2
    ProxyJump user1@server1

Объяснение проблемы

Существует несколько вариантов поведения:

  • Когда команда ssh передает команду, она не создаетTTY по умолчанию (если не указано -t или -tt).Это влияет на способность любой вызываемой программы манипулировать настройками терминала;isatty(0) это также обычный способ сделать "я-я-интерактив?"проверять.Если stdin оболочки не присоединен к TTY, это один из способов определить, что он не интерактивный.
  • Когда оболочка запускается с "$SHELL" -c "command" - как ssh при ее передачекоманда для запуска - она ​​не запускается в интерактивном режиме и поэтому не вызывает rc файлов (которые явно предназначены для интерактивного использования).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...