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?

CrazyKitty Rotoshi
la source
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.

Hooman
la source
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 -
timxor
la source
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 .
Roberto Rodriguez
la source
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)
smcjones
la source
4

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

exit

Ensuite, je me reconnecte.

Est Ma
la source
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.

Aritrik
la source
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 :)

Tech Nomad
la source
-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
yunus
la source
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