Vom Umgang mit Windows Zeilenenden auf Unix-Systemen | ||
|
Ich starte ein Shellscript, dass ich von meinem Windows-PC mit scp rüberkopiert habe und das Ding läuft nicht mit ganz dubiosen Fehlermeldungen: ~$ ./test.sh : bad interpreter: No such file or directoryAber das Script gibt's, die Hash-Bang-Zeile stimmt auch und dem Script sieht man keine Fehler an. Mögliche Fehlerursache: Die Zeilenenden sind falsch. cat -v test.shbringt es an den Tag: $ cat -v test.sh ^M echo "TEST TEST"^MWas machen die komischen '^M' hier ? Und vor allem: Wie bekomme ich die wieder weg ? Zeilenende-Markierungen auf verschiedenen SystemenIm ASCII-Zeichensatz sind zwei verschiedene Codes für die Zeilenende-Markierung vorgesehen: CR (Carriage Return: Wagenrücklauf) und LF (Line Feed: Zeilenvorschub). Und wie so oft führt ein mehrdeutiger Standard zu inkompatiblen Lösungen:
Warum laufen Scripte mit Windows-Zeilenenden nicht ?Die erste Zeile im Script (s.o.) heisst z.B. #!/bin/bash^MUnd damit sucht das System einen Interpreter, der "/bin/bash^M" heisst, und den gibt es wohl auf den meisten Systemen nicht.... Wie wandle ich Windows-Zeilenenden in Unix-Zeilenenden um ?
|
Ulrich Herbst Letzte Änderung: 17.02.2004 10:08:33