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?


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

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.