O problema é que você está tentando executar um alias em um shell não interativo. Quando você executa ssh user@computer command , command é executado de forma não interativa.
Shells não interativos não lêem aliases (do man bash):
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).
Funciona se você executá-lo novamente manualmente porque o comando final bash inicia um shell interativo para que seus aliases estejam disponíveis agora.
Como alternativa, você poderia lançar um shell interativo ( bash -i ) em vez de um simples shell de login ( bash -l ) na máquina remota para executar seu alias:
ssh user@remote_computer -t 'bash -ic "my_alias;bash"'
Esta parece ser uma abordagem muito complicada. Você não explicou por que exatamente precisa fazer isso, mas considere estas alternativas:
-
Basta iniciar um shell interativo de login normal na máquina remota e executar o comando manualmente:
user@local $ ssh user@remote user@remote $ my_alias -
Se você quiser sempre que o alias seja executado quando se conectar a este computador, edite o
~/.profile(ou~/.bash_profile, se presente) do computador remoto e adicione essa linha no final:my_aliasPorque
~/.profileé lido toda vez que um shell de login é iniciado (assim, sempre que você se conecta viassh, por exemplo), isso fará com quemy_aliasseja executado toda vez que você se conectar.Observe que, por padrão, os shells de login leem
~/.profileou~/.bash_profilee ignoram~/.bashrc. Algumas distribuições (Debian e seus derivados e Arch, por exemplo) distribuições como o Ubuntu têm seus~/.profileou~/.bash_profilearquivos% source~/.bashrcpadrão, o que significa que seus aliases definidos em~/.bashrctambém estarão disponíveis em um shell de login. Isso não é verdadeiro para todas as distribuições, portanto, talvez seja necessário editar manualmente o~/.profilepara que ele tenha a origem~/.bashrc. Observe também que, se existir~/.bash_profile,~/.profileserá ignorado pelo bash.