Shell-Init-Problem beim Klicken auf die Registerkarte. Was ist mit getcwd falsch?


153

Sobald ich bei Bash auf Tab klicke, wird die Fehlermeldung angezeigt. Was ist los?

symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success

Manchmal lautet die Fehlermeldung:

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No s uch file or directory

Wie löse ich das Shell-Init-Problem?

Antworten:


280

Dies tritt normalerweise auf, wenn Ihr aktuelles Verzeichnis nicht mehr existiert. Höchstwahrscheinlich entfernen Sie dieses Verzeichnis von einem anderen Terminal (aus einem Skript oder was auch immer). Um dies zu beseitigen, falls Ihr aktuelles Verzeichnis in der Zwischenzeit neu erstellt wurde, nur cdin ein anderes (vorhandenes) Verzeichnis und dann cdzurück; das einfachste wäre : cd; cd -.


2
Ich glaube nicht, dass mein Verzeichnis nicht existiert, nicht jemand hat es neu erstellt, ich bin in / root ... also ist das Problem vielleicht ein bisschen anders als dein Sprichwort ...
hugemeow

1
Können Sie Ihre HOME-Umgebungsvariable überprüfen? echo $HOME;; Wenn das auf einen nicht existierenden Ort hinweist, ist es das nicht.
Costi Ciudatu

1
(Ich benutze Shell in tmux) Tab funktioniert manchmal gut, aber manchmal, wenn ich einen neuen Tab mit tmux erstelle, drücke Tab, und dieser Fehler erscheint, ich weiß nicht, was passiert ist :(
hugemeow

@kevinarpe Das ist gut zu wissen, danke! Ich dachte immer, es sei klug genug, nichts zu tuncd .
Costi Ciudatu

2
@kevinarpe, ja, $PWDwird von POSIX garantiert definiert. Siehe pubs.opengroup.org/onlinepubs/9699919799/utilities/…
Charles Duffy

61

Wechseln Sie einfach das Verzeichnis in ein anderes und kehren Sie zurück. Wahrscheinlich wurde dieser gelöscht oder verschoben.


7

Tritt dies zufällig in einem Verzeichnis auf, das OverlayFS (oder einen anderen speziellen Dateisystemtyp) verwendet?

Ich hatte gerade dieses Problem, bei dem meine getcwdüberkompilierte Version von bash eine interne Implementierung verwendet, bei der Probleme mit OverlayFS auftreten. Informationen dazu habe ich hier gefunden:

Es scheint, dass dies auf eine interne Implementierung von getcwd () in bash zurückzuführen ist. Beim Cross-Compilieren kann die Verwendung von malloc durch getcwd () nicht überprüft werden. Daher ist es vorsichtig und setzt GETCWD_BROKEN und verwendet eine interne Implementierung von getcwd (). Diese interne Implementierung scheint mit OverlayFS nicht gut zu funktionieren.

http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204

Sie können bash mit konfigurieren und neu erstellen bash_cv_getcwd_malloc=yes(wenn Sie tatsächlich bash erstellen und Ihre C-Bibliothek einen getcwd-Aufruf ausführt).


Ich konnte meinen Fehler beheben, indem ich die vollständigen Bibliotheksaktualisierungen durchführte
Richard Day,

5

Ja, cd; und cd - würde funktionieren. Der Grund dafür ist, dass das Verzeichnis von einem anderen Terminal oder einem anderen Programm gelöscht und neu erstellt wird. Daher wird der i-Node-Eintrag so geändert, dass das Programm nicht auf den alten i-Node-Eintrag zugreifen kann.


Ich konnte es auf Ubuntu 14 beheben, indem ich die vollständigen Bibliotheksaktualisierungen hier durchführte: digitalocean.com/community/tutorials/…
Richard Day
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.