Je voulais exécuter un script shell:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
J'ai essayé de faire une procédure standard, mais j'ai eu cette erreur:
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
DEBUG cd/etc/opt/ldapfiles/ldif_in ;
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
**ERROR sh: ./create_mgw_3shelf_6xIPNI1P.sh: /bin/bash^M: bad interpreter: No such file or directory**
Qu'est-ce que ça veut dire? Je faisais cela en tant root
qu'utilisateur du root
groupe.
Cela signifie-t-il que le fichier n'a pas la permission correcte pour l' root
utilisateur?
la source
dos2unix
programme.\n
parce que c'est Unix. Le script était peut-être d'une version antérieure de Mac OS? Vous pourriez courirsed -i -e 's/\r$/\n/' script.sh
dans ce cas.Dans vim, vous pouvez également utiliser
:set ff=unix
puis enregistrer le fichier ou:set ff=dos
obtenir à nouveau le formatage DOS.la source
Votre fichier a des fins de ligne de style DOS / Windows (CR LF) , mais sur les systèmes de type Unix, seul le caractère de contrôle LF est utilisé comme saut de ligne.
Le caractère de contrôle CR supplémentaire est codé comme
^M
dans votre sortie. Vous pouvez aussi le voir quand vous courezcat -A create_mgw_3shelf_6xIPNI1P.sh
.Pour convertir les fins de ligne de style DOS / Windows en style Unix, il existe un outil appelé
dos2unix
. Vous l'installez en utilisant:Ensuite, vous pouvez simplement convertir les fins de ligne des fichiers dans les deux sens en utilisant
Dans votre cas, exécutez simplement la commande ci-dessous et le fichier de script sera converti sur place:
Après cela, Bash devrait pouvoir interpréter le fichier correctement.
la source
Le problème est que vous éditez avec Dos!
ouvrez votre fichier avec vi puis définissez unix avec:
et tout va bien
la source
Faire
vi <your script>
.puis
:set list
; il affichera n'importe lequel des caractères spéciaux de votre script.puis remplacez le personnage:
:%s/^M//gc
[pour taper^M
appuyez sur Ctrl+ v+ m]la source
Comme expliqué dans les autres réponses, il s'agit d'un problème de format. La solution consiste donc à changer le format de fin de ligne de style DOS en style Unix. C'est encore un autre moyen simple de réparer votre fichier "en place"
Il est disponible en package
tofrodos
:la source
Vous pouvez également utiliser gedit pour supprimer les caractères indésirables. Dans le menu Fichier, sélectionnez Enregistrer sous et définissez le type de fin de ligne unix / Linux.
la source