Mesma resposta que a anterior, mas adicione +m
para correção de problema de controle de trabalho:
ssh otherserver "bash -ic +m 'source .profile; some-aliased-command'"
Não consigo fazer com que este comando funcione:
user@server:~: ssh otherserver bash -ic 'source .profile; some-aliased-command'
Variações que experimentei
user@server:~: ssh -t otherserver bash -ic 'source .profile; some-aliased-command'
user@server:~: ssh -t otherserver "bash -ic 'source .profile; some-aliased-command'"
user@server:~: ssh -t otherserver "bash -ic source .profile; some-aliased-command"
user@server:~: ssh otherserver bash -ic 'source .profile; some-aliased-command'
user@server:~: ssh otherserver "bash -ic 'source .profile; some-aliased-command'"
user@server:~: ssh otherserver "bash -ic source .profile; some-aliased-command"
Geralmente, obtenho uma variação desses erros:
bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell
stdin: is not a tty
bash: some-aliased-command: command not found
Mas assim, funciona:
user@server:~: ssh otherserver bash -i << EOF
source .profile
some-aliased-command
EOF
Na verdade, quando eu executo isso:
ssh -t otherserver 'bash -ic "source ~/.profile; alias"'
Ele lista todos os aliases, incluindo o some-aliased-command
que eu quero executar.
Eu tentei vários tipos de variações com quoutes simples, duplos e com escape, mas estou preso e só funciona com a versão heredoc.
Como faço para que funcione sem o heredoc (como um one-liner)?
Mesma resposta que a anterior, mas adicione +m
para correção de problema de controle de trabalho:
ssh otherserver "bash -ic +m 'source .profile; some-aliased-command'"