Warum hat BASH "bash: cd: write error: Success" gedruckt?

12

Ich habe das heute mehrmals bemerkt. Wenn ich tippe cd ../Directory, um in ein anderes Verzeichnis zu wechseln, wird "bash: cd: write error: Success" ausgegeben. Ich kann nicht feststellen, welche anderen vorherigen Befehle damit zusammenhängen könnten.

  • typeset -f druckt nichts.
  • alias druckt nichts.
  • type -a cd druckt "cd is a shell builtin".
  • echo $CDPATH druckt eine leere Zeile.
  • $BASH_VERSION druckt "bash: 4.2.37 (1) -release: Befehl nicht gefunden".
  • Ich habe das nur 2-3 mal bemerkt. Das Ausgangsverzeichnis und das Zielverzeichnis waren in beiden Situationen identisch. Ich habe die Verzeichnisse viele Male auf diese Weise geändert, bin aber nicht immer auf den Fehler gestoßen.

Was könnte das verursachen?

Dorf
quelle
Bitte fügen Sie die Ausgabe von type -a cdGlenn hinzu.
Terdon
Bitte fügen Sie die Ausgabe des typeBefehls Ihrer Frage hinzu. Kommt dies auch in allen Verzeichnissen vor oder nur, wenn Sie sich in einem bestimmten Verzeichnis befinden? Und was ist die Ausgabe von echo $CDPATH?
Terdon
Welche genaue Bash-Version (in $BASH_VERSION) verwenden Sie?
Gabe
Ich habe bash 4.2.37(1).
Dorf

Antworten:

6

Vielleicht ein Fehler?

Das klingt nach einem möglichen Fehler. Ich habe einen ähnlichen Bericht gefunden, der dieselbe Nachricht enthält. Der eingebaute Fehler bash: pwd wird mit einem Schreibfehler beendet: Erfolgreich .

Auszug

Diese Meldung wird angezeigt, wenn ferror (stdout) ungleich Null zurückgibt. Aus irgendeinem Grund (wahrscheinlich der Aufruf von fflush () unmittelbar vor der Prüfung) bewirkt stdio, dass ferror () true zurückgibt, ohne errno zu setzen.

Kommt das zweimal hintereinander vor? Das eingebaute pwd ruft clearerr () auf, nachdem die Fehlermeldung gedruckt wurde. Selbst wenn das stdout-Fehlerflag "klebt", sollte dies gelöscht werden.

Kann den Verlauf nicht aktualisieren?

Der Fehler lässt mich denken, dass es erfolgreich war, Verzeichnisse zu ändern, aber den Befehl nicht cd ../Directoryin Ihr Verzeichnis schreiben konnte $HOME/.bash_history. Ich würde bestätigen, dass diese Datei intakt und beschreibbar ist. Stellen Sie außerdem sicher, dass Ihr $HOMEVerzeichnis beschreibbar und nicht voll ist.

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home
slm
quelle
Die /homePartition verfügt über viel Speicherplatz. Ich kann in ".bash_history" nichts Seltsames finden, es ist so eingestellt, dass es nur für den Besitzer liest und schreibt. Immer wenn ich ein Terminal verlasse, werden die Daten von diesem Terminal dort gespeichert. Ist es möglich, dass dies aufgetreten ist, weil ich mehrere Terminalfenster gleichzeitig ausgeführt habe?
Dorf
@Village - vielleicht, aber jedes Mal, wenn ein Befehl in einer Shell ausgeführt wird, sollte er die Verlaufsdatei sperren und freigeben, wenn er abgeschlossen ist. Jeder andere Prozess, der dasselbe tut, würde nur warten.
slm
bash schreibt nicht ~/.bash_historysofort nach dem Ausführen des Befehls, sondern nach dem Schließen der Sitzung, oder?
SOFe
@Pemapmodder - richtig, es war mir unklar, ob das OP so etwas getan hatte: askubuntu.com/questions/67283/… .
slm
Ich bin auf das gleiche Problem gestoßen, und ich bin mir ziemlich sicher, dass es nicht wahr ist (weil ich su rootzu dieser Zeit war und sofort tail /root/.bash_historynichts Relevantes sah, dann exitzurück zu meinem normalen Benutzer, dann sudo tail /root/.bash_historyund der Zeile (beide Zeilen,). da ich das wiederholt habe cd) wurde ja geschrieben.
SOFe
3

Ihr CD-Befehl ist entweder ein Alias ​​oder höchstwahrscheinlich eine Bash-Funktion.

typeset -f  # displays functions
alias       # display aliases

Wenn mit den obigen Befehlen nicht gefunden, which cdwird der Pfad des cdBefehls gesucht.

Suchen Sie nach dem cdAlias oder Funktionsdefinition in dem normalen Startskripte .bash_profile, .bashrcund .profile.

Verdächtiger
quelle
typeset -f,, aliasund which cdalle geben nichts zurück, und die anderen Dateien enthalten nur PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Dorf
2
Verwenden Sietype -a cd
Glenn Jackman
1
type -a cddruckt "cd is a shell builtin".
Dorf