ubuntuusers.de

Shebang #!/bin/bash funktioniert nicht

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 20.10 (Groovy Gorilla)
Antworten |

jolexin

Avatar von jolexin

Anmeldungsdatum:
22. Dezember 2009

Beiträge: 325

Wohnort: München

Der Shebang #!/bin/bash bringt bei mir einen unverständlichen Fehler: s: Zeile 1: #!/bin/bash: Datei oder Verzeichnis nicht gefunden

Mein test-script s:

andrea@medion:~/bin$ cat s
#!/bin/bash
ls
echo "Fertig (Eingabe)"
read Antwort
exit

ausführbar ist es auch:

ls -l
-rwxrwxr-x 1 andrea andrea   57 Dez 22 10:46 s

Ausführung mit ./s zeigt folgendes (bash s bringt das gleiche Ergebnis)

andrea@medion:~/bin$ ./s
./s: Zeile 1: #!/bin/bash: Datei oder Verzeichnis nicht gefunden
aaa  Datsich-Fotos.sh  s
Fertig (Eingabe)
aaa
andrea@medion:~/bin$ 

Ich habe die Shebang Zeile gelöscht. Ausführung mit bash s bringt folgendes:

andrea@medion:~/bin$ bash s
s: Zeile 1: ls: Befehl nicht gefunden
Fertig (Eingabe)
aaa

Also wird immer der Inhalt der 1. Zeile bemeckert. Es riecht nach einer Fehleinstellung in der Befehls-Ausführungs-Umgebung. Wie komme ich diesem Fehler auf die Spur?

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Ist da vielleicht ein komisches Zeichen am Beginn der Datei? Zeig bitte mal xxd s | head.

Seebär

Avatar von Seebär

Anmeldungsdatum:
2. Mai 2009

Beiträge: 833

Shell-Scripte müssen (in jeder Zeile) mit LF und nicht CRLF enden. Ist das evtl. Dein Fehler? Wenn ja, anders speichern oder mit dos2unix File konvertieren.

jolexin

(Themenstarter)
Avatar von jolexin

Anmeldungsdatum:
22. Dezember 2009

Beiträge: 325

Wohnort: München

Die vorherige Datei s habe ich nicht mehr. Die Vermutung von sebix klingt sehr wahrscheinlich; nach vielem Herumeditieren an s lief der shebang plötzlich und ich konnte weitere Befehle in die Datei einfüllen. Jetzt heißt die Datei Datsich-Doku.sh und " xxd Datsich-Doku.sh | head" sieht wie folgt aus:

andrea@medion:~/bin$ xxd Datsich-Doku.sh | head
00000000: 2321 2f62 696e 2f62 6173 680a 230a 686f  #!/bin/bash.#.ho
00000010: 6d65 5f70 6661 643d 2f68 6f6d 652f 616e  me_pfad=/home/an
00000020: 6472 6561 0a23 2323 6563 686f 202a 2a2a  drea.###echo ***
00000030: 6465 6275 6723 2068 6f6d 655f 7066 6164  debug# home_pfad
00000040: 2024 686f 6d65 5f70 6661 6420 2323 2364   $home_pfad ###d
00000050: 6562 7567 2323 230a 7369 6368 6572 756e  ebug###.sicherun
00000060: 6773 5f67 6572 6165 745f 7066 6164 3d2f  gs_geraet_pfad=/
00000070: 6d65 6469 612f 616e 6472 6561 2f4d 795f  media/andrea/My_
00000080: 5061 7373 706f 7274 0a23 2323 6563 686f  Passport.###echo
00000090: 202a 2a2a 6465 6275 6723 2073 6963 6865   ***debug# siche
andrea@medion:~/bin$ ls

Das erste Zeichen # hat den Code 23 ja?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

jolexin schrieb:

Die vorherige Datei s habe ich nicht mehr. Die Vermutung von sebix klingt sehr wahrscheinlich; nach vielem Herumeditieren an s lief der shebang plötzlich und ich konnte weitere Befehle in die Datei einfüllen. Jetzt heißt die Datei Datsich-Doku.sh und " xxd Datsich-Doku.sh | head" sieht wie folgt aus:

andrea@medion:~/bin$ xxd Datsich-Doku.sh | head
00000000: 2321 2f62 696e 2f62 6173 680a 230a 686f  #!/bin/bash.#.ho
00000010: 6d65 5f70 6661 643d 2f68 6f6d 652f 616e  me_pfad=/home/an
00000020: 6472 6561 0a23 2323 6563 686f 202a 2a2a  drea.###echo ***
00000030: 6465 6275 6723 2068 6f6d 655f 7066 6164  debug# home_pfad
00000040: 2024 686f 6d65 5f70 6661 6420 2323 2364   $home_pfad ###d
00000050: 6562 7567 2323 230a 7369 6368 6572 756e  ebug###.sicherun
00000060: 6773 5f67 6572 6165 745f 7066 6164 3d2f  gs_geraet_pfad=/
00000070: 6d65 6469 612f 616e 6472 6561 2f4d 795f  media/andrea/My_
00000080: 5061 7373 706f 7274 0a23 2323 6563 686f  Passport.###echo
00000090: 202a 2a2a 6465 6275 6723 2073 6963 6865   ***debug# siche
andrea@medion:~/bin$ ls

Das erste Zeichen # hat den Code 23 ja?

Nicht ganz. Es hat den Hexadezimalcode 23 oder x23 oder #23 oder 35(dezimal=default). 😉

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13192

sebix schrieb:

Ist da vielleicht ein komisches Zeichen am Beginn der Datei? Zeig bitte mal xxd s | head.

Ich finde ja die Ausgabe von od -t x1c datei lesbarer, weil man dann die Hex-Zahlen und die Zeichen direkt untereinander hat und nicht zählen muss. Im aktuellen Fall sieht das so aus:

$ od -t x1c s | head
0000000  23  21  2f  62  69  6e  2f  62  61  73  68  0a  23  0a  68  6f
          #   !   /   b   i   n   /   b   a   s   h  \n   #  \n   h   o
0000020  6d  65  5f  70  66  61  64  3d  2f  68  6f  6d  65  2f  61  6e
          m   e   _   p   f   a   d   =   /   h   o   m   e   /   a   n
0000040  64  72  65  61  0a  23  23  23  65  63  68  6f  20  2a  2a  2a
          d   r   e   a  \n   #   #   #   e   c   h   o       *   *   *
0000060  64  65  62  75  67  23  20  68  6f  6d  65  5f  70  66  61  64
          d   e   b   u   g   #       h   o   m   e   _   p   f   a   d
0000100  20  24  68  6f  6d  65  5f  70  66  61  64  20  23  23  23  64
              $   h   o   m   e   _   p   f   a   d       #   #   #   d
Antworten |