Quando você executa um comando através de ssh
, ele é executado chamando seu $SHELL
com o -c
flag:
-c If the -c option is present, then commands are read from
the first non-option argument command_string. If there are
arguments after the command_string, the first argument is
assigned to $0 and any remaining arguments are assigned to
the positional parameters.
Então, ssh remote_host "bash -c foo"
será executado:
/bin/your_shell -c 'bash -c foo'
Agora, como o comando que você está executando ( export foo=bar
) contém espaços e não está corretamente cotado para formar um todo, o export
é considerado como o comando a ser executado e o restante é salvo na matriz de parâmetros posicionais . Isso significa que export
é executado e foo=bar
é passado para ele como $0
. O resultado final é o mesmo que correr
/bin/your_shell -c 'bash -c export'
O comando correto seria:
ssh remote_host "bash -c 'export foo=bar'"