Por que o BASH imprimiu “bash: cd: write error: Success”?

12

Eu notei isso várias vezes hoje. Se eu digitar cd ../Directorypara mudar para outro diretório, ele imprimirá "bash: cd: write error: Success". Não consigo determinar quais outros comandos anteriores podem estar relacionados a isso.

  • typeset -f imprime nada.
  • alias imprime nada.
  • type -a cd imprime "cd é um shell embutido".
  • echo $CDPATH imprime uma linha vazia.
  • $BASH_VERSION imprime "bash: 4.2.37 (1) -release: comando não encontrado".
  • Eu só notei isso 2-3 vezes. O diretório inicial e o diretório de destino eram idênticos nas duas situações. Mudei de diretório dessa maneira muitas outras vezes, mas nem sempre encontrei o erro.

O que poderia estar causando isso?

Vila
fonte
Por favor, adicione a saída type -a cdconforme solicitado por Glenn.
terdon
Por favor, adicione a saída do typecomando à sua pergunta. Além disso, isso acontece em todos os diretórios ou apenas se você estiver em um diretório específico? E qual é a saída echo $CDPATH?
terdon
Qual versão exata do bash (in $BASH_VERSION) você está executando?
Gabe
Eu tenho bash 4.2.37(1).
Vila

Respostas:

6

Talvez um bug?

Isso soa como um bug em potencial. Encontrei um relatório semelhante mostrando a mesma mensagem. O bug bash: pwd builtin sai com o erro de gravação: Success .

excerto

Esta mensagem será exibida se ferror (stdout) retornar diferente de zero. Por alguma razão (provavelmente a chamada fflush () imediatamente antes da verificação), o stdio está fazendo com que o ferror () retorne true sem definir errno.

Isso acontece duas vezes seguidas? O pwd builtin chama clearerr () após imprimir a mensagem de erro, portanto, mesmo se o sinalizador de erro stdout `grudar ', isso deve ser eliminado.

Não consegue atualizar o histórico?

O erro me faz pensar que foi bem-sucedido na alteração de diretórios, mas não foi capaz de gravar o comando cd ../Directoryno seu $HOME/.bash_history. Confirmo que este arquivo está intacto e é gravável. Confirme também que seu $HOMEdiretório está gravável e não cheio.

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home
slm
fonte
A /homepartição tem muito espaço disponível. Não consigo encontrar nada de estranho em ".bash_history", ele está configurado para ler e escrever apenas para o proprietário. Sempre que eu saio de um terminal, os dados desse terminal ainda vão para lá. É possível que isso tenha acontecido porque eu estava executando várias janelas de terminal ao mesmo tempo?
Vila
@ Village - talvez, mas cada vez que um comando é executado em um shell, ele deve bloquear o arquivo de histórico e liberar quando terminar, todos os outros processos que fazem o mesmo esperariam.
slm
O bash não grava ~/.bash_historyimediatamente após executar o comando, mas após o encerramento da sessão, certo?
SOFe 19/03/16
@Pemapmodder - correto, não estava claro para mim se o OP tinha feito algo assim: askubuntu.com/questions/67283/… .
slm
Eu encontrei o mesmo problema e tenho certeza de que isso não é verdade (porque eu era su rootnaquele momento e instantaneamente tail /root/.bash_historynão vi nada relevante, depois exitvoltei ao meu usuário normal sudo tail /root/.bash_historye à linha (ambas as linhas, desde que repeti o cd) foi de fato escrito.
SOFe 20/16
3

Seu comando cd é um alias ou provavelmente uma função bash.

typeset -f  # displays functions
alias       # display aliases

Se não encontrado com os comandos acima, which cdirá localizar o caminho do cdcomando.

Procure a cddefinição do alias ou função nos scripts de inicialização normais .bash_profile, .bashrce .profile.

suspeito
fonte
typeset -f,, aliase which cdtodos não retornam nada, e os outros arquivos contêm apenas PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Vila
2
usetype -a cd
glenn jackman
1
type -a cdimprime "cd é um shell embutido".
Vila