Este comando deve funcionar:
server1> ssh apptst@server2 'bash -l -c "echo \$APPHOME"'
- você precisa de
'
quotes para passar o comando complete para ssh como um argumento; isso também impede que o shell no server1 expanda$APPHOME
-
bash -l
inicia um shell de login, que lê nos arquivos de perfis, onde $ APPHOME é definido (como @chepner apontou em sua resposta, isso não é padrão quando invocado pelo sshd) -
-c
executa o próximo argumento, novamente com aspas que o comando echo completo é executado. - escapando
\$
é necessário, porque senão o shell pai (não-login) que o sshd invoca (e que herda o ambiente diretamente do init (*)) expande$APPHOME
. Mas isso é muito cedo, pois$APPHOME
só é definido para shells login (via~/.profile
). [<> adicionou este ponto após comentário do OP ]
(*) me corrijam, se eu estiver errado aqui.