Ваша командная строка:
ssh localhost sh -c 'echo hey; echo ho'
ssh
запускает оболочку на localhost и передает ей командную строку:
sh -c echo hey; echo ho
Оболочка на localhost видит две команды. Оба работают нормально.
Проблема в том, что первая команда: sh -c echo hey
Опция -c
указывает sh
выполнить следующий аргумент. Следующий аргумент echo
. Чужой аргумент hey
игнорируется.
Чтобы исправить вашу проблему, либо измените цитату, либо просто не запускайте избыточную оболочку:
ssh localhost "sh -c 'echo hey; echo ho'"
ssh localhost 'echo hey; echo ho'
Основная путаница, вероятно, заключается в том, что ssh
объединяет все неопциональные аргументы, которые он получает, в одну строку, которую он передает удаленной оболочке для выполнения.