“Pas un tel fichier ou répertoire” mais il existe

Je veux simplement exécuter un exécutable à partir de la ligne de commande, ./arm-mingw32ce-g++ , mais j’obtiens ensuite le message d’erreur,

 bash: ./arm-mingw32ce-g++: No such file or directory 

J’utilise Ubuntu Linux 10.10. ls -l listes

 -rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++ 

Utiliser sudo ( sudo ./arm-mingw32ce-g++ ) donne

 sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory 

Je ne sais pas pourquoi le système d’exploitation ne peut même pas voir le fichier lorsqu’il est présent. Des pensées?

Cette erreur peut signifier que ./arm-mingw32ce-g++ n’existe pas (mais c’est le cas), ou qu’il existe et est un exécutable lié dynamicment, reconnu par le kernel mais dont le chargeur dynamic n’est pas disponible. Vous pouvez voir quel chargeur dynamic est requirejs en exécutant ldd /arm-mingw32ce-g++ ; Tout ce qui not found est le chargeur dynamic ou une bibliothèque que vous devez installer.

Si vous essayez d’exécuter un binary 32 bits sur une installation amd64:

  • Jusqu’à Ubuntu 11.04, installez le paquet ia32-libs .
  • Sur Ubuntu 11.10, installez ia32-libs-multiarch .
  • À partir de 12.04, installez ia32-libs-multiarch ou sélectionnez un ensemble raisonnable de :i386 packages :i386 en plus des packages :amd64 .

J’ai fait face à cette erreur lorsque j’essayais de créer une source Selenium sur Ubuntu. Le script shell simple avec un shebang correct n’a pas pu être exécuté même après que toutes les conditions préalables aient été couvertes.

 file file-name # helped me in understanding that CRLF ending were present in the file. 

J’ai ouvert le fichier dans Vim et je pouvais voir que juste parce que j’ai édité ce fichier sur une machine Windows, c’était au format DOS. J’ai converti le fichier au format Unix avec la commande ci-dessous:

 dos2unix filename # actually helped me and things were fine. 

J’espère que nous devrions faire attention chaque fois que nous modifions des fichiers sur plusieurs plates-formes, nous devrions également prendre soin des formats de fichiers.

Cette erreur peut également se produire si vous essayez d’exécuter un script et que le shebang est mal orthographié. Assurez-vous qu’il lit #!/bin/sh , #!/bin/bash ou quel que soit l’interpréteur que vous utilisez.

J’avais le même message d’erreur lorsque j’essayais d’exécuter un script Python – ce n’était pas le cas d’utilisation de @ Warpspace (voir les autres commentaires), mais c’était l’un des meilleurs résultats de ma recherche.

Dans mon cas, ce sont les fins de ligne DOS ( \r\n au lieu de \n ) que la ligne shebang ( #!/usr/bin/env python ) trébucherait. Un simple dos2unix myfile.py corrigé le dos2unix myfile.py .

J’ai eu la même erreur pour un simple script bash qui n’aurait pas de problèmes 32/64 bits. C’est peut-être parce que le script que vous essayez d’exécuter contient une erreur. Ce message sur le forum Ubuntu indique qu’avec les fichiers de script normaux, vous pouvez append ‘sh’ devant et que vous pourriez en obtenir un résultat de débogage. par exemple

 $ sudo sh arm-mingw32ce-g++ 

et voyez si vous obtenez une sortie.

Dans mon cas, le problème était que le fichier que j’essayais d’exécuter était au format Windows plutôt que sous Linux.

J’ai eu cette erreur “No such file or directory” mais cela existe parce que mon fichier a été créé sous Windows et que j’ai essayé de l’exécuter sur Ubuntu et que le fichier contenait 15 Je viens de créer un nouveau fichier tronquant des éléments indésirables

 sleep: invalid time interval '15\r' Try 'sleep --help' for more information. script.sh: 5: script.sh: /opt/ag/cont: not found script.sh: 6: script.sh: /opt/ag/cont: not found root@Ubuntu14:/home/abc12/Desktop# vi script.sh root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 0000000 # ! / usr / bin / envb 0000020 ash \r \nwgethttp : / 0000400 : 4 1 2 0 / \r \n 0000410 root@Ubuntu14:/home/abc12/Desktop# tr -d \\015 < script.sh > script.sh.fixed root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 0000000 # ! / usr / bin / envb 0000020 ash \nwgethttp : / / 0000400 / \n 0000402 root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

J’ai eu le même problème avec un fichier que j’ai créé sur mon mac. Si j’essaie de l’exécuter dans un shell avec ./filename, j’ai reçu le message d’erreur fichier introuvable. Je pense que quelque chose n’allait pas avec le fichier.

ce que j’ai fait:

ouvrir une session ssh sur le serveur
chat nom de fichier
copier la sortie dans le presse-papiers
nom de fichier rm
toucher le nom du fichier
vi nom de fichier
i pour le mode insertion
coller le contenu du presse-papiers
ESC pour terminer le mode d’insertion
: wq!

Cela a fonctionné pour moi.

Je viens d’avoir ce problème dans mingw32 bash . J’avais exécuté node / npm à partir de Program Files (x86)\nodejs , puis je les ai déplacés dans le répertoire disabled (en les supprimant essentiellement du chemin). J’avais aussi Program Files\nodejs (c’est-à-dire la version 64 bits) dans le chemin, mais seulement après la version x86. Après le redémarrage du shell bash, la version 64 bits de npm pouvait être trouvée. node fonctionné correctement tout le temps (vérifié avec le node -v qui a changé lorsque la version x86 a été déplacée).

Je pense que hash -r aurait fonctionné au lieu de redémarrer bash: https://unix.stackexchange.com/a/5610

La commande ci-dessous a fonctionné sur 16.4 Ubuntu

Ce problème survient lorsque votre fichier .sh est corrompu ou n’est pas formaté selon les protocoles Unix.

dos2unix convertit le fichier .sh au format Unix!

 sudo apt-get install dos2unix -y dos2unix test.sh sudo chmod u+x test.sh sudo ./test.sh