aliases não sendo expandidos quando executados por SSH [duplicado]

-1

então eu tenho um alias para o hadoop que eu defini no bash_aliases que bashrc toca, eu acho.

alias hadoop=/usr/local/hadoop-2.7.2/bin/hadoop

Agora, o alias funciona bem quando tento executá-lo diretamente. Mas quando eu tento isso

ssh aditya@localhost hadoop

Eu recebo a seguinte mensagem de erro

bash: hadoop: command not found

Eu tentei o seguinte também

shopt -s expand_aliases

Mas isso não funcionou. Alguém poderia me ajudar.

Atualização:

Esta pergunta é diferente da minha, porque o comando ssh não é gerado por mim, então a solução para essa pergunta não resolve minha questão. O comando ssh é gerado e executado por um script dentro de uma biblioteca que estou usando. Eu não prefiro modificar esse script para alterar o comando, pois não estou completamente ciente de como esse script funciona.

    
por Aditya 27.08.2016 / 06:30

1 resposta

1

De man ssh

% bl0ck_qu0te%

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'
    
por Sergiy Kolodyazhnyy 27.08.2016 / 06:42