Мне кажется, это потому, что перенаправление выполняется до раскрытия переменной. man bash
не совсем понятно, что делается первым:
REDIRECTION Before a command is executed, its input and output may be redirected...
EXPANSION Expansion is performed on the command line after it has been split into words.
Когда перенаправление выполнено и удалено, exec
пытается выполнить 200
, которого не существует, и, следовательно, ошибка msg.
Попробуйте передать -o ServerAliveInterval=20
, который будет регулярно отправлять некоторые данные для подключения как часть протокола ssh и может помочь в решении вашей проблемы.
Также вы можете захотеть использовать терминальные мультиплексоры tmux
или screen
в сеансе ssh
, так что это будет просто вопрос повторного подключения сеанса при повторном подключении вместо того, чтобы перезапускать все .