¿Por qué BASH imprimió “bash: cd: write error: Success”?

12

Me di cuenta de esto varias veces hoy. Si cd ../Directoryescribo para cambiar a otro directorio, imprime "bash: cd: write error: Success". No puedo determinar qué otros comandos anteriores podrían estar relacionados con esto.

  • typeset -f No imprime nada.
  • alias No imprime nada.
  • type -a cd imprime "cd es un shell incorporado".
  • echo $CDPATH Imprime una línea vacía.
  • $BASH_VERSION imprime "bash: 4.2.37 (1) -release: comando no encontrado".
  • Solo noté esto 2-3 veces. El directorio inicial y el directorio de destino fueron idénticos en ambas situaciones. Cambié los directorios de esta manera muchas otras veces, pero no siempre encontré el error.

¿Qué podría estar causando esto?

Pueblo
fuente
Agregue la salida de type -a cdcomo Glenn solicitó.
terdon
Agregue el resultado del typecomando a su pregunta. Además, ¿esto sucede en todos los directorios o solo si está en uno o varios? ¿Y cuál es la salida de echo $CDPATH?
terdon
¿Qué versión exacta de bash (in $BASH_VERSION) estás ejecutando?
Gabe
Tengo bash 4.2.37(1).
Pueblo

Respuestas:

6

Tal vez un error?

Esto suena como un error potencial. Encontré un informe similar que muestra el mismo mensaje. El error bash: pwd incorporado sale con error de escritura: éxito .

extracto

Este mensaje se mostrará si ferror (stdout) devuelve un valor distinto de cero. Por alguna razón (probablemente la llamada fflush () inmediatamente anterior a la verificación), stdio está causando que ferror () regrese verdadero sin establecer errno.

¿Esto sucede dos veces seguidas? El pwd builtin llama a clearerr () después de imprimir el mensaje de error, por lo que incluso si el indicador de error stdout se 'pegue', eso debería borrarlo.

¿No se puede actualizar el historial?

El error me hace pensar que fue exitoso al cambiar los directorios, pero no fue capaz de escribir el comando cd ../Directoryen su $HOME/.bash_history. Confirmaría que este archivo está intacto y se puede escribir. También confirme que su $HOMEdirectorio se puede escribir y no está lleno.

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home
slm
fuente
La /homepartición tiene mucho espacio disponible. No puedo encontrar nada extraño en ".bash_history", está configurado para leer y escribir solo para el propietario. Cada vez que salgo de un terminal, los datos de ese terminal todavía van allí. ¿Es posible que esto haya surgido porque estaba ejecutando varias ventanas de terminal al mismo tiempo?
Pueblo
@Village: tal vez, pero cada vez que se ejecuta un comando en un shell, debe bloquearse el archivo de historial y liberarse cuando está hecho, cualquier otro proceso que haga lo mismo solo esperaría.
slm
bash no escribe ~/.bash_historyinmediatamente después de ejecutar el comando, pero después de cerrar la sesión, ¿verdad?
SOFe
@Pemapmodder - correcto, no estaba claro para mí si el OP había hecho algo como esto: askubuntu.com/questions/67283/… .
slm
Encontré el mismo problema, y ​​estoy bastante seguro de que no es cierto (porque lo estaba su rooten ese momento, e instantáneamente tail /root/.bash_historyno vi nada relevante, luego exitvolví a mi usuario normal y luego a sudo tail /root/.bash_historyla línea (ambas líneas, desde repetí el cd) fue hecho por escrito.
sofe
3

Su comando cd es un alias o muy probablemente una función bash.

typeset -f  # displays functions
alias       # display aliases

Si no se encuentra con los comandos anteriores which cd, localizará la ruta del cdcomando.

Buscar la cddefinición de alias o función en los scripts de inicio normales .bash_profile, .bashrcy .profile.

sospechoso
fuente
typeset -f, aliasy which cdtodos no devuelven nada, y los otros archivos solo contienen PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Pueblo
2
usotype -a cd
glenn jackman
1
type -a cdimprime "cd es un shell incorporado".
Pueblo