sftp erro de comprimento de pacote com .bashrc carregado

0

Eu uso regularmente o WinSCP para transferir alguns arquivos para o meu servidor pessoal. No entanto, recentemente eu experimentei o infame erro "bad packet length" devido a uma das minhas instruções de eco residindo dentro do arquivo .bashrc. Portanto, com relação a isso: erro de corrupção do sftp Eu gostaria de perguntar o seguinte:

Por que o sistema reclamou de uma instrução echo (ou do que está causando o erro) residindo dentro do meu arquivo .bashrc e não do meu .bash_profile?

.. se o sftp for algum tipo de sub-processo gerado pelo servidor ssh como o link acima sugere, ele não deve primeiro analisar o arquivo .bash_profile e reclamar sobre suas próprias instruções echo?

Obrigado antecipadamente

    
por kstratis 13.07.2012 / 16:51

2 respostas

2

Eu uso a seguinte linha (duas com comentário) no topo do meu .bashrc , ele simplesmente aborta se não for um shell interativo:

# if we're not an interactive shell, do nothing
[ -z "$PS1" ] && return

Suponho que se você quiser a forma longa:

# if we're not an interactive shell, do nothing
if [ -z "$PS1" ]; then
    return
fi

Isso atenua a necessidade de um arquivo .bashrc_profile , já que o .bashrc altera a forma como responde com base em como foi chamado.

    
por 14.07.2012 / 22:07
1

.bash_profile é executado para shells de login. .bashrc é executado para shells interativos. Aparentemente, o WinSCP deve estar criando um shell interativo sem logon na máquina remota. Detalhes podem ser encontrados na seção INVOCATION da página man do Bash.

    
por 13.07.2012 / 20:54