De man ssh
Isso significa que o shell executará seu comando como sh -c
. Isso é o primeiro de tudo - isso é executado em dash
, que é o shell padrão e vinculado a /bin/sh
. Portanto, o seu alias para bash
não funcionará em primeiro lugar.
Em segundo lugar, sh -c
é shell não interativo. Isso significa que ele não irá originar seu ~/.bashrc
se você tiver definido o alias lá.
Mas a principal razão pela qual seu comando não funciona é porque você executa
alias hadoop=/usr/local/hadoop-2.7.2/bin/hadoop
na sessão shell atual . Não é exportado, nem é em ~/.bashrc
a ser originado para começar com
Aqui está uma alternativa. Faça o alias no seu ~/.bashrc
:
alias run_hadoop='ssh aditya@localhost /usr/local/hadoop-2.7.2/bin/hadoop'
Dessa forma, será mais fácil do que definir alias apenas para comando e falhar novamente para executá-lo. Como alternativa, crie um script de wrapper run_hadoop.sh
em seu diretório pessoal:
#!/bin/bash
exec /usr/local/hadoop-2.7.2/bin/hadoop
Verifique se ele é executável com chmod +x run_hadoop.sh
. Depois disso você pode fazer
ssh aditya@localhost 'bash /home/user/run_hadoop.sh'