Por que meu alias não funciona sobre o ssh?

5

Eu tenho um alias definido no meu .bashrc

alias l.='ls -d .* --color=auto'

É muito útil :) mas não funciona via ssh :

$ ssh localhost l.
bash: l.: command not found

Por que isso?

    
por Zanna 09.08.2016 / 17:04

1 resposta

5

Tente:

ssh localhost -t bash -ci l.

Nota:

  • O alias deve estar em ~/.bashrc no servidor remoto, não em sua máquina local.

  • A opção -i informa bash para executar um shell interativo. Os aliases são habilitados por padrão apenas em shells interativos.

  • As opções -t informam ssh para alocar uma pseudo-tty. Sem isso, bash emite uma mensagem de aviso quando iniciado no modo interativo. Isso também ativa ls colors. Sem isso, você teria que usar --color=always , consulte man ls .

  • Existe outra maneira de ativar aliases, sem definir o sinalizador interativo, ou seja, shopt -s expand_aliases . Então você poderia tentar:

    ssh localhost 'bash -c "shopt -s expand_aliases; l."'
    

    No entanto:

    • Seu .bashrc só pode definir aliases se a origem do shell for interativa. Neste exemplo, o shell não seria interativo naquele momento.

    • Se você tentar definir aliases na mesma linha, consulte isso .

por Matei David 09.08.2016 / 17:07

Tags