GNU/Linux >> Tutoriels Linux >  >> Linux

Le script SH dans $PATH est introuvable sur Linux Alpine 3.11

Votre shell interactif est dash (masqué comme sh ). Le dash shell dit

sh: /usr/local/bin/wait-for: not found

lorsqu'il essaie d'exécuter un script qui a un #! défectueux -ligne pointant vers un interpréteur introuvable. Cela arrive être exactement la même erreur que vous obtiendriez lorsque la commande que vous tapez est introuvable, il est donc facile de penser qu'il s'agit d'un $PATH problème (ce n'est pas dans ce cas). D'autres shells ont des messages d'erreur plus informatifs (bash et zsh dit "mauvais interpréteur :aucun fichier ou répertoire de ce type" et vous indique également quel interpréteur il a essayé d'exécuter).

Puisque le fichier est un fichier texte DOS, le #! -line demande au shell d'exécuter le script avec /bin/sh\r , où \r est une représentation courante d'un caractère de retour chariot, qui fait partie de la terminaison de ligne dans les fichiers texte DOS. Sur un système Unix, un retour chariot est un "caractère ordinaire" et ne fait pas du tout partie de la terminaison de ligne, ce qui signifie qu'il essaie de commencer /bin/sh\r pour exécuter votre script, puis échoue car ce fichier n'existe pas. C'est donc l'interprète qui est "introuvable", pas le script lui-même.

Exécuter le script avec un explicite l'interpréteur contourne le #! -line, toujours, c'est pourquoi vous n'obtenez pas l'erreur lorsque vous faites cela. Cependant, chaque ligne du script aurait toujours les retours chariot à la fin, ce qui peut entraîner un dysfonctionnement du script dans certaines conditions.

Réenregistrez simplement le fichier en tant que fichier texte Unix ou convertissez-le avec dos2unix , résoudrait votre problème.


Linux
  1. dos2unix :commande introuvable

  2. chmod :commande introuvable

  3. mkfs :commande introuvable

  4. fichier :commande introuvable

  5. tune2fs :commande introuvable

Faire référence à un fichier sous le même répertoire qu'un script trouvé dans $path ?

nano :commande introuvable

tri :commande introuvable

sed :commande introuvable

shebang ou pas shebang

Créer des modèles avec Linux dans un script Shell ?