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


213

J'essaie de compiler du code ARM dans Ubuntu 12.

Tout fonctionne bien lorsque je mets le code dans le répertoire local.

Mais quand je mets le code dans le répertoire de montage cité, l'erreur apparaît:

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

Voici ma configuration dans 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

Qu'est-ce qui se passe ici? Qu'est-ce qui pourrait provoquer cette erreur?


J'essaye dans Ubuntu 10.10 ça marche bien avec la même config.
CrazyKitty Rotoshi

50
Ce message d'erreur peut être déclenché lorsque vous essayez d'exécuter une commande à partir d'un chemin qui n'existe pas (par exemple, si le processus B supprime un dossier dans lequel le processus A se trouve actuellement. Un exemple réel: dans le terminal A: mkdir ~/myfunnydir && cd ~/myfunnydirdans le terminal B: rm -rf ~/myfunnydiret enfin de retour dans le terminal A nouveau: java --version)
dBM

Votre répertoire est monté automatiquement mais les informations d'identification sont stockées dans /root. Un utilisateur normal ne pourra pas le monter car les informations d'identification ne lui seront pas lisibles. Essayez de le faire en tant que montage non automatique et laissez root le monter.
alvits

Réponses:


566

Cette erreur est généralement due à l'exécution d'une commande à partir d'un répertoire qui n'existe plus.

Essayez de changer votre répertoire et réexécutez la commande.


4
getcwdobtient le répertoire de travail actuel et si le répertoire est supprimé ou déplacé, il sera mécontent! Voir le manuel Linux pour getcwd
Hooman

2
Vous devrez peut-être même le faire si vous avez supprimé le répertoire dans lequel vous vous trouviez et en avez recréé un au même endroit avec le même nom.
Jackson

Tout à fait vrai! agréable!
farhad goodarzi

1
tout ce que j'ai fait, c'est frapper le cd et relancer la commande, et ça a marché, merci!
FreeSoftwareServers

Je l'ai remarqué moi-même lors de l'exécution de la mise à niveau apt-get à partir d'un répertoire inexistant. Le message se propage environ 20 fois, puis la mise à jour continue comme si de rien n'était. J'espérais trouver plus d'informations sur les raisons pour lesquelles apt-get se soucie même du dossier dans lequel je me trouve, surtout avec insistance et si peu de conséquences.
Darren Ringer

12

Essayez la commande suivante, cela a fonctionné pour moi.

cd; cd -

qu'est-ce que c'est?
dılo sürücü

cd;cd -vous ramènera généralement au répertoire personnel et vous ramènera au répertoire dans lequel vous vous trouviez juste avant le répertoire actuel. Donc, fondamentalement, vous allez dans le répertoire personnel et revenez. Cependant, si le répertoire d'origine dans lequel vous vous trouviez est supprimé, cela ne fonctionnera pas.
Hooman

8

Cela m'est aussi arrivé sur un répertoire recréé, le répertoire est le même mais pour le faire fonctionner à nouveau il suffit de lancer:

cd .

6

Cela peut parfois arriver avec des liens symboliques. Si vous rencontrez ce problème et que vous savez que vous êtes dans un répertoire existant, mais que votre lien symbolique a peut-être changé, vous pouvez utiliser cette commande:

cd $(pwd)

4

Dans Ubuntu 16.04.3 LTS, la commande suivante fonctionne pour moi:

exit

Ensuite, je me reconnecte.


2
en fait, il suffirait de basculer vers un répertoire existant comme Hooman l'a déjà dit dans sa réponse
derHugo

2

Veuillez vérifier si le chemin du répertoire existe ou non. Cette erreur apparaît si le dossier n'existe pas à partir de l'endroit où vous exécutez la commande. Vous avez probablement exécuté une commande de suppression à partir du même chemin d'accès en ligne de commande.


1
C'est ce que Hooman a déjà dit dans sa réponse
derHugo

0

Dans mon cas, rien ci-dessus n'a fonctionné. Après m'être cogné la tête contre le mur pendant un certain temps, j'ai découvert que j'avais détruit les /etc/passwdentrées en exécutant un script bash-script-setup-linux-server-setup qui fonctionnait bien auparavant, mais cette fois l'expression régulière à l'intérieur la commande "sed" a effacé toutes les entrées existantes: D Après avoir copié les entrées par défaut d'un autre serveur linux opérationnel, j'ai enfin pu redémarrer sshd.

N'oubliez donc pas de sauvegarder le /etc/passwdfichier d' origine avant d'y appliquer des remplacements regex :)


-8

Même j'avais le même problème avec python virtualenv Il a été corrigé par un simple redémarrage

sudo shutdown -r now

4
en fait, il suffirait de passer à un répertoire existant comme Hooman l'a déjà dit dans sa réponse il y a longtemps ...
derHugo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.