sh: 0: échec de getcwd (): aucun fichier ou répertoire de ce type

11

J'essaie de compiler le code ARM dans Ubuntu 12.04.

Tout fonctionne bien lorsque je mets mon code dans le répertoire local. Mais quand je mets le code dans le répertoire cité monter cette erreur se produit:

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

Voici ma commande de montage:

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

J'utilise Ubuntu 12.04 64 bits

Quelle serait la cause de cette erreur?

dongjiawei
la source
1
Votre répertoire de travail n'existe plus. Tapez cd [PATH]votre shell pour accéder à un shell existant.
David Foerster
voir aussi ici: stackoverflow.com/a/21593371/7111561
derHugo

Réponses:

7

J'ai eu cette erreur en utilisant jshint via un sous-processus python sur Ubuntu 12.10 64 bits.

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

Cela est dû au fait que vous avez supprimé ou déplacé un répertoire en dessous et que le répertoire actuel ne peut pas être déterminé.

Comment savoir si vous rencontrez ce problème:

Exécutez la commande cd . (si vous obtenez cette erreur, vous avez ce problème).

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

Vous avez essayé de changer de répertoire dans votre répertoire actuel et vous ne l'avez pas pu.

Comment reproduire l'erreur:

jshint est affecté par cette erreur. Créez un répertoire foo, cd dedans, créez un fichier appelémyjavascript.js

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

jshint fonctionne correctement, il indique qu'il n'y a aucune erreur qui est correcte.

Ouvrez un 2ème terminal et rm -rfle répertoire /home/el/foopar en dessous.

rm -rf /home/el/foo

Exécutez à jshint myjavascript.jsnouveau depuis votre premier terminal et vous obtenez une erreur:

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

Le répertoire est parti! Et même si vous deviez le remplacer par le même contenu, il a une signature différente et le terminal ne peut pas récupérer, la méthode getcwdne peut pas savoir quel est le répertoire actuel.

Trois solutions:

Le terminal est confus quant à ce que le répertoire actuel est parce qu'il a disparu ou que sa signature a changé. Effectuez l'une des opérations suivantes pour le corriger:

  1. Exécutez la commande cd ..jusqu'à ce que vous ne receviez plus d'erreurs. Cela re synchronise le terminal avec le système de fichiers. Revenez ensuite dans votre répertoire. Réessayer. L'erreur disparaît.

  2. Utilisez su youruserdans le terminal, entrez le mot de passe. Il rafraîchit et vous ramène au même répertoire.

  3. Fermez et rouvrez le terminal qui vide les signatures de répertoire périmées. Ou envoyez un nastymail à n'importe quel programme (jshint) ou aux milliers d'autres programmes qui ne peuvent pas tolérer ou récupérer des signatures de répertoire périmées.

Eric Leschinski
la source
au lieu d'exécuter cd .."assez souvent", vous pouvez également accéder cd ~directement à votre dossier personnel
derHugo
4

J'obtiens la même erreur, mais j'essayais d'exécuter un script dans mon répertoire personnel. Je l'ai résolu avec:

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

Cela déplace mon vers mon répertoire personnel, puis exécute pwd (mais vous pouvez exécuter tout ce que vous aimez), puis le popd me ramène là où j'étais. Si vous n'avez pas besoin de revenir en arrière,

cd; pwd

Serait suffisant pour résoudre mon problème (j'espère que cela aidera le vôtre.)

modifier Les 1>/dev/nullpièces sont facultatives; Je les ajoute pour pouvoir utiliser la ligne ci-dessus dans un script shell sans sortie supplémentaire qui n'est pas nécessaire dans ce cas.

Alexx Roche
la source
Alors que je peux passé cela dans un script bash et ne pas finir avec une sortie que je ne veux pas. J'essaie d'ajouter une réponse aussi complète que je peux parce que quand je trouve commandline-fu je trouve facile de le réduire à mes besoins et je me attends quelqu'un qui utilise ce être un peu comme moi.
Alexx Roche
ok, j'ai ajouté une édition expliquant, (bien que certains pourraient penser que je leur apprends à faire des grimaces - ceux qui savent ne pas besoin de la modifier et de ceux qui ne savent pas peut couper-n-coller, ou rechercher que fonction non directement liée à la question initiale).
Alexx Roche
Malheureusement, c'est comme ça :(
Braiam
-1

Même moi, je suis le même problème avec virtualenv python. Il a été corrigé par un simple redémarrage

sudo shutdown -r now
yunus
la source
2
Je ne pense pas que vous auriez besoin de redémarrer pour le réparer, il suffit de suivre les autres réponses ici, et cdà un répertoire existant.
wjandrea
Si vous avez une nouvelle question, s'il vous plaît demander en cliquant sur le Poser une question bouton. Inclure un lien vers cette question si elle aide à fournir un contexte. - Envoyée
N0rbert
1
@ N0rbert Ce n'est pas une nouvelle question, c'est clairement une tentative de répondre et de fournir une solution valide à mon humble avis (bien que certainement pas optimale).
Byte commandant
@ByteCommander J'ai cliqué dessus par erreur, je suis désolé.
N0rbert