I'm Lernen durch dieses Tutorial zu lernen bash Skripte, um ein paar Aufgaben für mich zu automatisieren. I'm Verbindung zu einem Server mit putty.
Das Skript, das sich in .../Dokumente/LOG
befindet, lautet:
#!/bin/bash
# My first script
echo "Hello World!"
Und ich habe Folgendes für Lese-/Schreib-/Ausführungsberechtigungen ausgeführt
chmod 755 my_script
Wenn ich dann ./my_script
eingebe, erhalte ich den im Titel angegebenen Fehler.
Einige ähnliche Fragen wollten diese sehen, so dass ich denke, sie könnten helfen:
which bash
/bin/bash
und
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh
Ich habe versucht, das aktuelle Verzeichnis zu PATH
hinzuzufügen, aber das funktioniert nicht...
Ich habe dieses Problem bei der Erstellung von Skripten in Windows env und der anschließenden Portierung zur Ausführung in einer Unix-Umgebung festgestellt.
Versuchen Sie, dos2unix
für das Skript auszuführen:
http://dos2unix.sourceforge.net/
Oder schreiben Sie das Skript einfach in Ihrer Unix-Umgebung mit vi
um und testen Sie es.
Unix verwendet andere Zeilenenden und kann daher die Datei, die Sie unter Windows erstellt haben, nicht lesen. Daher sieht es ^M als illegales Zeichen an.
Wenn Sie eine Datei unter Windows schreiben und dann portieren wollen, stellen Sie sicher, dass Ihr Editor so eingestellt ist, dass er Dateien im UNIX-Format erstellt.
In Notepad++ wird unten rechts auf dem Bildschirm das Dokumentformat angezeigt. Standardmäßig steht dort Dos\Windows
. Um es zu ändern, gehen Sie zu
Wenn Sie Sublime Text unter Windows oder Mac verwenden, um Ihre Skripte zu bearbeiten:
Klicken Sie auf "View > Line Endings > Unix" und speichern Sie die Datei erneut.
Dies wird dadurch verursacht, dass die Datei unter Windows bearbeitet und unter Unix importiert und ausgeführt wird.
Mit "dos2unix -k -o filename" sollte es klappen.