sh: 0: getcwd () fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis

11

Ich versuche, ARM-Code in Ubuntu 12.04 zu kompilieren.

Alles funktioniert gut, wenn ich meinen Code in ein lokales Verzeichnis lege. Aber wenn ich den Code in das angegebene Mount-Verzeichnis lege, tritt folgender Fehler auf:

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

Hier ist mein Mount-Befehl:

sudo mount -t cifs -o username=wx,passwd=wx,auto,nounix,noserverino,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm,rw,uid=1002,gid=1002 //192.165.54.18/prj_9330  /home/dongjw/work_dir/work_9330

Ich benutze Ubuntu 12.04 64bit

Was würde diesen Fehler verursachen?

Dongjiawei
quelle
1
Ihr Arbeitsverzeichnis existiert nicht mehr. Geben Sie cd [PATH]Ihre Shell ein, um zu einer vorhandenen zu wechseln.
David Foerster
siehe auch hier: stackoverflow.com/a/21593371/7111561
derHugo

Antworten:

7

Ich habe diesen Fehler mit jshint über einen Python-Unterprozess unter Ubuntu 12.10 64-Bit erhalten.

node.js:464
var cwd = process.cwd();
                  ^
Error: ENOENT, no such file or directory
    at Function.resolveArgv0 (node.js:464:23)
    at startup (node.js:51:13)
    at node.js:555:3

Dies liegt daran, dass Sie ein Verzeichnis darunter gelöscht oder verschoben haben und das aktuelle Verzeichnis nicht ermittelt werden kann.

So erkennen Sie, ob Sie dieses Problem haben:

Führen Sie den Befehl aus cd . (Wenn Sie diesen Fehler erhalten, haben Sie dieses Problem).

el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent 
directories: No such file or director

Sie haben versucht, das Verzeichnis in Ihr aktuelles Verzeichnis zu ändern, konnten dies jedoch nicht.

So reproduzieren Sie den Fehler:

jshint ist von diesem Fehler betroffen. Machen Sie ein Verzeichnis foo, CD in es, machen Sie eine Datei namensmyjavascript.js

cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js

jshint läuft korrekt, es heißt, es gibt keine Fehler, die korrekt sind.

Öffnen Sie ein zweites Terminal und rm -rfdas Verzeichnis /home/el/foovon unten.

rm -rf /home/el/foo

Führen Sie das jshint myjavascript.jserneut von Ihrem ersten Terminal aus und Sie erhalten eine Fehlermeldung:

el@apollo:~/foo$ jshint myjavascript.js 

    node.js:464
        var cwd = process.cwd();
                      ^
    Error: ENOENT, no such file or directory
        at Function.resolveArgv0 (node.js:464:23)
        at startup (node.js:51:13)
        at node.js:555:3

Das Verzeichnis ist weg! Und selbst wenn Sie es durch denselben Inhalt ersetzen, hat es eine andere Signatur und das Terminal kann nicht wiederhergestellt werden. Die Methode getcwdkann das aktuelle Verzeichnis nicht kennen.

Drei Lösungen:

Das Terminal ist verwirrt darüber, was das aktuelle Verzeichnis ist, weil es weg ist oder sich seine Signatur geändert hat. Führen Sie einen der folgenden Schritte aus, um das Problem zu beheben:

  1. Führen Sie den Befehl aus, cd ..bis keine Fehler mehr angezeigt werden. Dadurch wird das Terminal erneut mit dem Dateisystem synchronisiert. Dann CD zurück in Ihr Verzeichnis. Versuch es noch einmal. Der Fehler verschwindet.

  2. Geben Sie su youruserim Terminal das Passwort ein. Es wird aktualisiert und bringt Sie zurück in dasselbe Verzeichnis.

  3. Schließen Sie das Terminal und öffnen Sie es erneut, wodurch die veralteten Verzeichnissignaturen entfernt werden. Oder senden Sie eine Nastymail an ein beliebiges Programm (jshint) oder an Tausende anderer Programme, die veraltete Verzeichnissignaturen nicht tolerieren oder wiederherstellen können.

Eric Leschinski
quelle
anstatt cd .."oft genug" zu laufen , können Sie auch cd ~direkt zu Ihrem Homefolder
derHugo
4

Ich erhalte den gleichen Fehler, habe jedoch versucht, ein Skript in meinem Home-Verzeichnis auszuführen. Ich habe es gelöst mit:

pushd ~ 1>/dev/null; pwd ; popd 1>/dev/null

Dadurch wird mein Verzeichnis in mein Ausgangsverzeichnis verschoben, dann wird pwd ausgeführt (aber Sie können alles ausführen, was Sie möchten), und das Popd verschiebt mich zurück zu meinem ursprünglichen Standort. Wenn Sie dann nicht zurück müssen

cd; pwd

Wäre genug, um mein Problem zu lösen (ich hoffe, dass es bei Ihnen hilft.)

bearbeiten Die 1>/dev/nullTeile sind optional; Ich füge sie hinzu, damit ich die obige Zeile in einem Shell-Skript ohne zusätzliche Ausgabe verwenden kann, die in diesem Fall nicht benötigt wird.

Alexx Roche
quelle
Damit ich dies in ein Bash-Skript einfügen kann und nicht mit einer Ausgabe enden kann, die ich nicht möchte. Ich versuche, eine möglichst vollständige Antwort hinzuzufügen, denn wenn ich Kommandozeilen-Fu finde, fällt es mir leicht, sie auf meine Bedürfnisse zu reduzieren, und ich erwarte, dass jeder, der dies verwendet, ein bisschen wie ich ist.
Alexx Roche
ok, ich habe eine Bearbeitung hinzugefügt, die erklärt (obwohl einige das Gefühl haben, dass ich ihnen das Saugen von Eiern beibringe - diejenigen, die es wissen, brauchen die Bearbeitung nicht und diejenigen, die es nicht wissen, können es ausschneiden und einfügen oder nachschlagen Funktion, die nicht direkt mit der ursprünglichen Frage zusammenhängt.)
Alexx Roche
Leider ist das so :(
Braiam
-1

Sogar ich hatte das gleiche Problem mit Python Virtualenv. Es wurde durch einen einfachen Neustart korrigiert

sudo shutdown -r now
Yunus
quelle
2
Ich würde nicht denken, dass Sie neu starten müssten, um das Problem zu beheben. Folgen Sie einfach den anderen Antworten hier und cdin ein vorhandenes Verzeichnis.
Wjandrea
Wenn Sie eine neue Frage haben, fragen Sie es bitte durch Klicken Frage stellen Taste. Fügen Sie einen Link zu dieser Frage hinzu, wenn dies zur Bereitstellung des Kontexts beiträgt. - Aus der Überprüfung
N0rbert
1
@ N0rbert Dies ist keine neue Frage, es ist eindeutig ein Versuch, eine IMHO gültige (wenn auch sicherlich nicht optimale) Lösung zu beantworten und bereitzustellen.
Byte Commander
@ByteCommander Ich habe versehentlich darauf geklickt, tut mir leid.
N0rbert