Передавать команды в качестве входных данных для другой команды (su, ssh, sh и т. Д.)

У меня есть скрипт, где мне нужно запустить команду, а затем передать некоторые дополнительные командыкак команды к этой команде. Я старался

su
echo I should be root now:
who am I
exit
echo done.

... но это не работает:su удается, но тогда командная строка просто смотрит на меня. Если я наберуexit по подсказке,echo а такжеwho am i и т. д. начать выполнение! Иecho done. не выполняется вообще.

Точно так же мне нужно для этого работать надssh:

ssh remotehost
# this should run under my account on remotehost
su
## this should run as root on remotehost
whoami
exit
## back
exit
# back

Как мне это решить?

Я ищу ответы, которые решают это в общих чертах, и которые не являются специфичными дляsu или жеssh особенно. Цель состоит в том, чтобы этот вопрос сталканонический для этого конкретного шаблона.

Ответы на вопрос(3)

Ваш ответ на вопрос