ssh [email protected] -p 2222 echo $PATH
O PATH
do seu sistema local será impresso aqui. Você deve citar a variável para evitar que ela seja expandida pelo shell local:
ssh [email protected] -p 2222 'echo $PATH'
O mesmo se aplica a:
ssh [email protected] -p 2222 echo $(which brew)
Quanto a:
ssh [email protected] -p 2222 echo test ; which brew
which brew
é executado depois que o comando SSH termina, pelo seu shell local. É por isso que isso não funcionou:
ssh [email protected] -p 2222 /bin/sh -c "echo\ test\ \;\ which\ brew"
Nota lateral: você não precisa fazer tudo o que escapar.
O problema aqui é que você está adicionando brew
ao seu PATH
em .profile
(ou .bash_profile
ou algum arquivo semelhante), que é executado quando um login shell começou. O SSH inicia um shell de login somente quando ele é executado de forma interativa, não quando é solicitado que ele execute um comando. De man ssh
:
If command is specified, it is executed on the remote host instead of a login shell
Você pode tentar:
ssh [email protected] -p 2222 bash -lc brew