J'apprends grâce à ce tutoriel à apprendre scripts bash à automatiser quelques tâches pour moi. Je me connecte à un serveur à l'aide de PuTTY.
Le script, situé dans .../Documents/LOG
, est le suivant:
#!/bin/bash
# My first script
echo "Hello World!"
Et j'ai exécuté ce qui suit pour les autorisations de lecture/écriture/exécution
chmod 755 my_script
Ensuite, lorsque je saisis ./my_script
, le message d'erreur indiqué dans le titre s'affiche.
Certaines questions similaires voulaient voir cela, alors je pense qu'elles pourraient aider:
which bash
/ bin/bash
et
echo $PATH
/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jeux:/usr/bin/mh
J'ai essayé d'ajouter le répertoire courant à PATH
, mais ça ne marche pas.
J'ai constaté ce problème lors de la création de scripts dans Windows env, puis du portage sur un environnement Unix.
Essayez d’exécuter dos2unix
sur le script:
http://dos2unix.sourceforge.net/
Ou alors, réécrivez simplement le script dans votre envoi Unix en utilisant vi
et testez.
Unix utilise différentes fins de ligne, vous ne pouvez donc pas lire le fichier que vous avez créé sous Windows. Par conséquent, il considère ^ M comme un personnage illégal.
Si vous souhaitez écrire un fichier sous Windows puis le transférer, assurez-vous que votre éditeur est configuré pour créer des fichiers au format UNIX.
Dans le bloc-notes ++ en bas à droite de l'écran, il vous indique le format du document. Par défaut, il sera écrit Dos\Windows
. Pour le changer, allez à
Exécuter la commande suivante dans le terminal
sed -i -e 's/\r$//' scriptname.sh
Alors essaye
./scriptname.sh
Ça devrait marcher.
Si vous utilisez Sublime Text sous Windows ou Mac pour modifier vos scripts:
Cliquez sur View > Line Endings > Unix
et sauvegardez le fichier à nouveau.
Cela est dû à l'édition de fichier dans Windows, à l'importation et à l'exécution sous Unix.
dos2unix -k -o filename
devrait faire l'affaire.
Dans Notepad ++, vous pouvez le définir spécifiquement pour le fichier en appuyant sur
Édition -> Conversion EOL -> Format UNIX/OSX
le problème est avec la fin de la ligne dos. La suite le convertira en unix
dos2unix file_name
NB: vous devrez peut-être installer d’abord dos2unix avec yum install dos2unix
une autre façon de le faire consiste à utiliser la commande sed
pour rechercher et remplacer les caractères de fin de ligne dos au format unix:
$sed -i -e 's/\r$//' your_script.sh
Votre fichier a des fins de ligne Windows, ce qui crée une confusion pour Linux.
Supprimez les caractères CR parasites. Vous pouvez le faire avec la commande suivante:
$ sed -i -e 's/\r$//' setup.sh
J'ai pu résoudre le problème en ouvrant le script dans Gedit et en l'enregistrant avec l'option appropriée Line Ending
:
Fichier> Enregistrer sous ...
En bas à gauche de l'invite Save As
, vous trouverez des menus déroulants pour le codage de caractères et la fin de ligne. Changez la fin de ligne de Windows
en Unix/Linux
puis enregistrez.
Pour les utilisateurs de Eclipse , vous pouvez modifier le codage du fichier directement à partir du menu File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶)
:
Ou changez le New text file line delimiter
en Other: Unix
sur le panneau Window > Preferences > General > Workspace
:
Atom a un package de sélecteur de fin de ligne intégré
Plus de détails ici: https://github.com/atom/line-ending-selector