Script Bash et /bin/bash^M : mauvais interpréteur : Aucun fichier ou répertoire de ce type

Grâce à ce tutoriel, j&#8217apprends à apprendre des [scripts bash][1] pour automatiser quelques tâches pour moi. Je me connecte à un serveur à l'aide de Putty.

Le script, situé dans .../Documents/LOG, est :

#!/bin/bash
# My first script
echo "Hello World!"

Et j'ai exécuté ce qui suit pour les droits de lecture/écriture/exécution

chmod 755 my_script

Ensuite, lorsque je saisis ./my_script, j'obtiens l'erreur indiquée dans le titre.

Des questions similaires ont été posées et je pense que cela peut être utile :

which bash

/bin/bash

et

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh

J'ai essayé d'ajouter le répertoire courant au PATH, mais cela ne fonctionne pas...

[1] : http://linuxcommand.org/wss0010.php

Solution

J'ai rencontré ce problème lors de la création de scripts dans Windows env et de leur portage dans un environnement Unix.

Essayez d'exécuter dos2unix sur le script :

http://dos2unix.sourceforge.net/

Ou réécrivez simplement le script dans votre environnement Unix en utilisant vi et testez.

Unix utilise des fins de lignes différentes et ne peut donc pas lire le fichier que vous avez créé sous Windows. C'est pourquoi il voit ^M comme un caractère illégal.

Si vous voulez écrire un fichier sous Windows et le porter ensuite, assurez-vous que votre éditeur est configuré pour créer des fichiers au format UNIX.

Dans notepad++, en bas à droite de l'écran, il vous indique le format du document. Par défaut, il s'agit de Dos\Windows. Pour le changer, allez à

  • paramètres->préférences
  • nouveau document / onglet répertoire par défaut
  • sélectionnez le format unix et fermez
  • créer un nouveau document
Commentaires (12)

Si vous utilisez Sublime Text sur Windows ou Mac pour éditer vos scripts :

Cliquez sur Voir > Line Endings > Unix et save le fichier à nouveau.

! [entrer la description de l'image ici] [1]

[1] : http://i.stack.imgur.com/jkZER.png

Commentaires (5)

Ceci est dû à l'édition du fichier dans Windows et à l'importation et l'exécution dans Unix.

dos2unix -k -o filename devrait faire l'affaire.

Commentaires (1)