Ich wollte ein Shell-Skript ausführen:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
Ich habe versucht, eine Standardprozedur durchzuführen, habe jedoch den folgenden Fehler erhalten:
./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**
Was heißt das? Ich tat dies als root
Benutzer unter der root
Gruppe.
Bedeutet dies, dass die Datei nicht die richtige Berechtigung für den root
Benutzer hat?
quelle
dos2unix
Programm.\n
weil es Unix ist. Das Skript stammt möglicherweise aus einer früheren Mac OS-Version? Sie könntensed -i -e 's/\r$/\n/' script.sh
in diesem Fall laufen .In vim können Sie auch
:set ff=unix
die Datei verwenden und dann speichern oder:set ff=dos
die DOS-Formatierung erneut abrufen.quelle
Ihre Datei hat DOS / Windows-Zeilenenden (CR LF) , aber auf Unix-ähnlichen Systemen wird nur das LF- Steuerzeichen als Zeilenumbruch verwendet.
Das zusätzliche CR- Steuerzeichen wird wie
^M
in Ihrer Ausgabe codiert angezeigt . Sie können es auch sehen, wenn Sie laufencat -A create_mgw_3shelf_6xIPNI1P.sh
.Um die Zeilenenden vom DOS / Windows-Stil in den Unix-Stil zu konvertieren, gibt es ein Tool namens
dos2unix
. Sie installieren es mit:Dann können Sie einfach die Zeilenenden der Dateien mit in beide Richtungen konvertieren
Führen Sie in Ihrem Fall einfach den folgenden Befehl aus, und die Skriptdatei wird direkt konvertiert:
Danach sollte Bash die Datei korrekt interpretieren können.
quelle
Das Problem ist, Sie bearbeiten mit Dos!
Öffne deine Datei mit vi und setze dann Unix mit:
und alles in Ordnung
quelle
Tun
vi <your script>
.dann
:set list
; Es werden alle Sonderzeichen in Ihrem Skript angezeigt.dann ersetze das Zeichen:
:%s/^M//gc
[um zu tippen,^M
drücke Ctrl+ v+ m]quelle
Wie in den anderen Antworten erläutert, handelt es sich hierbei um ein Formatproblem. Die Antwort ist also, das Format von DOS auf Zeilenenden im Unix-Stil zu ändern. Dies ist eine weitere einfache Möglichkeit, Ihre Datei zu reparieren.
Es ist im Paket erhältlich
tofrodos
:quelle
Sie können auch gedit verwenden, um unerwünschte Zeichen zu entfernen. Wählen Sie im Menü Datei die Option Speichern unter und legen Sie den Zeilenende-Typ Unix / Linux fest.
quelle