Maison > développement back-end > Tutoriel Python > La solution au problème selon lequel 'il n'existe aucun fichier ou répertoire de ce type' lors de l'exécution dans un script shell

La solution au problème selon lequel 'il n'existe aucun fichier ou répertoire de ce type' lors de l'exécution dans un script shell

高洛峰
Libérer: 2017-01-09 13:42:52
original
4223 Les gens l'ont consulté

La raison pour laquelle un mauvais interprète : aucun fichier ou répertoire de ce type n'apparaît est le problème du format de fichier. Ce fichier a été écrit sous Windows. La méthode newline est différente d'Unix, mais elle ne peut pas être vue du tout si vous ne la définissez pas sous vim.

Analyse du problème :
1. Transférez le fichier SHELL écrit sous Windows vers Linux pour exécution, et un message d'erreur apparaît.
2. Message d'erreur : mauvais interprète : il n'existe aucun fichier ou répertoire de ce type.

Cause du problème :
Comme le système d'exploitation est Windows et que le script est édité sous Windows, il peut y avoir des caractères invisibles. Le fichier de script est au format DOS
, c'est-à-dire que la fin de chaque ligne est identifiée par rn et ses codes ASCII sont 0x0D, 0x0A

Solution :
Il existe de nombreuses façons de visualiser. ce fichier : format DOS, format UNIX ou format MAC
(1) nom de fichier vim
puis utilisez la commande : set ff
pour voir les mots dos ou unix. S'il s'agit bien du format dos, alors. utilisez Set ff=unix le force à être au format unix, puis enregistrez et quittez pour l'exécuter.
Vous pouvez utiliser
1. unix2dos ou dos2unix, deux petits programmes, pour convertir des formats de fichiers texte sur différentes plateformes. Dans djgpp, les noms de ces deux programmes sont dtou et utod, u signifie. unix, d Représente dos
2 Vous pouvez également utiliser des outils comme sed pour le faire :

sed ‘s/^M//' filename > tmp_filename
mv -f tmp_filename filename
Copier après la connexion

Remarque : ^M n'est pas le ^ et la lettre M produite en appuyant sur Shift 6, c'est le cas. un caractère, et son ASCII C'est 0x0D. La façon de le générer est d'appuyer d'abord sur CTRL V, puis sur Entrée (ou CTRL M)

De plus, lorsque le programme SHELL signale une commande introuvable, toujours vérifiez s'il y en a une dans votre PATH. Chaque commande utilisée par le programme (du genre qui ne spécifie pas de chemin absolu). Avec un si petit programme, vous pouvez la vérifier ligne par ligne.

Pièce jointe : il n'y a aucun problème de fichier ou de répertoire causé par l'écriture d'un /

Aujourd'hui, en parcourant le simple script shell que j'ai écrit auparavant, j'ai trouvé un problème :

Quand ./ demande toujours lors de l'exécution : (bash : ./hello.sh : bin/bash : mauvais interpréteur : aucun fichier ou répertoire de ce type), mais cela fonctionne correctement lors de l'exécution avec sh

Script original. :

(Essayez de voir si vous pouvez repérer les erreurs d'un seul coup d'oeil)

   #!bin/bash
   echo "Hello Linux!"
Copier après la connexion

Après plusieurs vérifications, j'ai constaté que j'avais perdu quelque chose dans mon écriture

Je devrais mettre le premier Changez la ligne en #!/bin/bash, et écrivez-en un de moins /

Hélas, c'est une question très simple, je n'ai jamais trouvé une telle erreur auparavant ! en effet facile à utiliser, mais la seule difficulté est le format Les exigences sont trop élevées !

Pour plus de solutions au problème "Il n'existe aucun fichier ou répertoire de ce type" lors de l'exécution dans un script shell, veuillez faire attention sur le site Web PHP chinois pour des articles connexes !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal