Почему эмуляторы терминалов по-прежнему должны эмулировать определенные старые терминалы?

[вы должны задать другой вопрос о другой проблеме, вместо того, чтобы копаться в этом]

Запуск ssh с аргументом [команда] (s)

Когда вы запускаете sshс [command]аргументами, как в ssh user@host foo bar baz, происходит следующее: его аргументы будут объединены пробелами в один аргумент, который будет передан через -c] переключиться на оболочку входа пользователя на удаленной машине (, если эта оболочка /bin/sh, /bin/sh -c 'foo bar baz'будет запущена ).

Теперь, что происходит в вашем примере:

echo yup | ssh admin@trg14 ksh -c 'exec 4<&0; ksh -c "rev <&5" 5<&4'

заключается в том, что аргументы ssh будут объединены в строку:

ksh -c exec 4<&0; ksh -c "rev <&5" 5<&4

и сначала запустится оболочка на удаленной машине

ksh -c exec 4<&0

, а затем

ksh -c "rev <&5" 5<&4

как две отдельные команды, и конечно fd 4 во второй ни на что не указывает, потому что он был только перенаправлен в первой команде.

0
21.07.2021, 17:26
0 ответов

Теги

Похожие вопросы