Perché BASH ha stampato "bash: cd: write error: Success"?


12

L'ho notato più volte oggi. Se digito cd ../Directoryper passare a un'altra directory, stampa "bash: cd: write error: Success". Non riesco a determinare quali altri comandi precedenti potrebbero essere correlati a questo.

  • typeset -f non stampa nulla.
  • alias non stampa nulla.
  • type -a cd stampa "cd is a shell builtin".
  • echo $CDPATH stampa una riga vuota.
  • $BASH_VERSION stampa "bash: 4.2.37 (1) -release: comando non trovato".
  • L'ho notato solo 2-3 volte. La directory iniziale e la directory di destinazione erano identiche in entrambe le situazioni. Ho cambiato directory in questo modo molte altre volte, ma non ho riscontrato sempre l'errore.

Che cosa potrebbe causare questo?


Aggiungi l'output di type -a cdcome richiesto da Glenn.
terdon

Aggiungi l'output del typecomando alla tua domanda. Inoltre, ciò accade in tutte le directory o solo se ci si trova in uno o più specifici? E qual è l'output di echo $CDPATH?
terdon

Quale versione esatta di bash (in $BASH_VERSION) stai usando?
Gabe,

Io ho bash 4.2.37(1).
Villaggio

Risposte:


6

Forse un insetto?

Sembra un potenziale bug. Ho trovato un rapporto simile che mostra lo stesso messaggio. Il bug bash: pwd builtin termina con errore di scrittura: successo .

estratto

Questo messaggio verrà visualizzato se ferror (stdout) restituisce un valore diverso da zero. Per qualche motivo (probabilmente la chiamata fflush () che precede immediatamente il controllo), stdio sta causando il ritorno di ferror () senza impostare errno.

Succede due volte di seguito? Il built-in pwd chiama clearerr () dopo aver stampato il messaggio di errore, quindi anche se il flag di errore stdout `si attacca ', questo dovrebbe cancellarlo.

Impossibile aggiornare la cronologia?

L'errore mi fa pensare che sia riuscito a cambiare directory, ma non è stato in grado di scrivere il comando cd ../Directorysul tuo $HOME/.bash_history. Confermerei che questo file è intatto ed è scrivibile. Conferma anche che la tua $HOMEdirectory è scrivibile e non piena.

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home

La /homepartizione ha molto spazio disponibile. Non riesco a trovare nulla di strano in ".bash_history", è impostato per leggere e scrivere solo per il proprietario. Ogni volta che esco da un terminale, i dati di quel terminale vanno ancora lì. È possibile che ciò si sia verificato perché stavo eseguendo più finestre di terminale contemporaneamente?
Villaggio

@Village - forse, ma ogni volta che un comando viene eseguito in una shell dovrebbe ottenere un blocco sul file della cronologia e rilasciarlo al termine, ogni altro processo che fa lo stesso aspetterebbe.
slm

bash non scrive ~/.bash_historyimmediatamente dopo aver eseguito il comando, ma dopo aver chiuso la sessione, giusto?
SOF

@Pemapmodder - esatto, non mi era chiaro se l'OP avesse fatto qualcosa del genere: askubuntu.com/questions/67283/… .
slm

Ho riscontrato lo stesso problema e sono abbastanza sicuro che non sia vero (perché lo ero su rootin quel momento e non ho tail /root/.bash_historyvisto immediatamente nulla di rilevante, quindi exittornare al mio normale utente, quindi sudo tail /root/.bash_history, e la riga (entrambe le righe, da quando ho ripetuto il cd) è stato effettivamente scritto
SOFe

3

Il tuo comando cd è un alias o molto probabilmente una funzione bash.

typeset -f  # displays functions
alias       # display aliases

Se non trovato con i comandi precedenti which cd, individuerà il percorso del cdcomando.

Cercare la cddefinizione di alias o funzione nelle normali script di avvio .bash_profile, .bashrce .profile.


typeset -f, aliase which cdtutti non restituiscono nulla e gli altri file contengono solo PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Villaggio

2
usotype -a cd
glenn jackman,

1
type -a cdstampa "cd is a shell builtin".
Villaggio
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.