Tenho certeza de que o problema é que seu .bashrc
está ecoando. Nunca imprima nada de .bashrc
quando não estiver sendo executado em um terminal, pois isso quebrará os programas que usam o ssh para ações automatizadas (rsync, git,…).
Na verdade, você não deve fazer nada de .bashrc
se não estiver sendo executado em um terminal. Coloque isso no começo do arquivo:
if ! [ -t 1 ]; then return; fi
O arquivo .bashrc
é destinado a shells interativos. Há um capricho no bash que faz com que ele carregue esse arquivo para todos os logins do rsh e do ssh, independentemente de serem interativos. Isso é ocasionalmente útil porque permite definir variáveis de ambiente para uma sessão ssh não interativa, mas isso é completamente diferente da configuração interativa (prompt, atalhos de teclado, aliases e assim por diante). Em geral, .bashrc
pode ser duas seções não relacionadas:
if [ -t 1 ]; then
# Stuff for interactive bash shells (defined here as shells running in a terminal).
# Prompt, key bindings, aliases, terminal settings, …
# It's ok to print things to the terminal here (e.g. to set the terminal title).
else
# Environment variables for ssh sessions.
# Do not print anything here.
fi
Nota: para um login ssh interativo, se bash for seu shell de login, ele lê .bash_profile
, mas não .bashrc
. Você desejará obter .bashrc
no seu .bash_profile
(se o shell for interativo).