sh: 0: getcwd () fehlgeschlagen: Keine solche Datei oder kein solches Verzeichnis auf dem angegebenen Laufwerk


210

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

Alles funktioniert gut, wenn ich den Code in das lokale Verzeichnis lege.

Aber wenn ich den Code in das angegebene Mount-Verzeichnis stecke, wird ein Fehler angezeigt:

making testXmlFiles
sh: 0: getcwd() failed: No such file or directory
ARM Compiling xxxxx.c
sh: 0: getcwd() failed: No such file or directory

Hier ist meine Einstellung in fstab

//10.0.0.1/data /mnt/data   cifs    auto,noserverino,credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm 0 0

Was geht hier vor sich? Was könnte diesen Fehler verursachen?


Ich versuche es in Ubuntu 10.10, es funktioniert gut mit der gleichen Konfiguration.
CrazyKitty Rotoshi

49
Diese Fehlermeldung wird möglicherweise ausgelöst, wenn versucht wird, einen Befehl über einen nicht vorhandenen Pfad auszuführen (z. B. wenn Prozess B einen Ordner löscht, in dem sich Prozess A gerade befindet. Ein Beispiel aus der Praxis: in Terminal A: mkdir ~/myfunnydir && cd ~/myfunnydirin Terminal B: rm -rf ~/myfunnydirund schließlich zurück in Terminal A wieder: java --version)
dbm

Ihr Verzeichnis wird automatisch gemountet, aber die Anmeldeinformationen werden in gespeichert /root. Ein normaler Benutzer kann es nicht bereitstellen, da die Anmeldeinformationen für ihn nicht lesbar sind. Versuchen Sie, es als nicht automatisches Mounten zu erstellen, und lassen Sie es von Root mounten.
Alvits

Antworten:


563

Dieser Fehler wird normalerweise durch Ausführen eines Befehls aus einem nicht mehr vorhandenen Verzeichnis verursacht.

Versuchen Sie, Ihr Verzeichnis zu ändern, und führen Sie den Befehl erneut aus.


4
getcwdRuft das aktuelle Arbeitsverzeichnis ab und wenn das Verzeichnis gelöscht oder verschoben wird, ist es unglücklich! Siehe Linux-Handbuch für getcwd
Hooman

2
Möglicherweise müssen Sie dies sogar tun, wenn Sie das Verzeichnis, in dem Sie sich befanden, gelöscht und eines an derselben Stelle mit demselben Namen neu erstellt haben.
Jackson

Genau richtig! nett!
Farhad Goodarzi

1
Alles, was ich getan habe, war, die CD zu drücken und den Befehl erneut auszuführen, und es hat funktioniert, danke!
FreeSoftwareServers

Ich habe dies selbst bemerkt, als ich apt-get upgrade aus einem nicht vorhandenen Verzeichnis ausgeführt habe. Die Nachricht spammt ungefähr 20 Mal, dann wird das Update fortgesetzt, als wäre nichts passiert. Ich hatte gehofft, mehr Informationen darüber zu finden, warum apt-get sich überhaupt darum kümmert, in welchem ​​Ordner ich mich befinde, besonders so beharrlich mit so wenig Konsequenz.
Darren Ringer

11

Versuchen Sie den folgenden Befehl, es hat bei mir funktioniert.

cd; cd -

Was ist das? Was ist es gemein?
dılo sürücü

cd;Normalerweise gelangen Sie in das Ausgangsverzeichnis und cd -zurück in das Verzeichnis, in dem Sie sich kurz vor dem aktuellen Verzeichnis befanden. Im Grunde genommen gehen Sie zum Home-Verzeichnis und kehren zurück. Wenn jedoch das ursprüngliche Verzeichnis, in dem Sie sich befanden, gelöscht wird, funktioniert dies nicht.
Hooman

7

Das ist mir auch in einem neu erstellten Verzeichnis passiert. Das Verzeichnis ist das gleiche, aber damit es wieder funktioniert, führen Sie einfach Folgendes aus:

cd .

6

Dies kann manchmal mit Symlinks passieren. Wenn dieses Problem auftritt und Sie wissen, dass Sie sich in einem vorhandenen Verzeichnis befinden, sich Ihr Symlink jedoch möglicherweise geändert hat, können Sie den folgenden Befehl verwenden:

cd $(pwd)

4

In Ubuntu 16.04.3 LTS funktioniert der nächste Befehl für mich:

exit

Dann habe ich mich wieder angemeldet.


2
Eigentlich würde es ausreichen, in ein bestehendes Verzeichnis zu wechseln, wie Hooman bereits in seiner Antwort
derHugo

2

Bitte überprüfen Sie den Verzeichnispfad, ob vorhanden oder nicht. Dieser Fehler tritt auf, wenn der Ordner nicht vorhanden ist, von dem aus Sie den Befehl ausführen. Wahrscheinlich haben Sie einen Befehl zum Entfernen aus demselben Pfad in der Befehlszeile ausgeführt.


1
Das hat Hooman bereits in seiner Antwort
derHugo

0

In meinem Fall hat nichts oben funktioniert. Nachdem ich meinen Kopf eine Weile gegen die Wand geschlagen habe, habe ich herausgefunden, dass ich die /etc/passwdEinträge zerstört habe, indem ich ein maßgeschneidertes Linux-Server-Setup-Bash-Skript ausgeführt habe, das zuvor gut funktioniert hat, aber diesmal die Regex darin Der Befehl "sed" löschte alle vorhandenen Einträge: D Nachdem ich die Standardeinträge von einem anderen funktionierenden Linux-Server kopiert und eingefügt hatte, konnte ich sshd endlich neu starten.

Vergessen Sie also nicht, die Originaldatei zu sichern, /etc/passwdbevor Sie Regex-Ersetzungen darauf anwenden :)


-8

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

sudo shutdown -r now

4
Eigentlich würde es ausreichen, in ein bestehendes Verzeichnis zu wechseln, wie Hooman bereits vor langer Zeit in seiner Antwort sagte ...
derHugo
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.