Hallo,
ich habe mir ein paar deb-Pakete erstellt und in der postinst !/bin/bash als Shebang angegeben. Allerdings wird diese von apt-get geflissentlich ignoriert. Bisher konnte ich das Problem lösen indem ich den Symlink von /bin/sh -> /bin/dash durch /bin/sh -> /bin/bash ersetzt habe.
Allerdings wird bei einem aktuellen Paket trotzdem ein Syntaxfehler angezeigt.
Wenn ich das postinst-Skript mit /bin/bash ./postinst aufrufe gibt es keine Probleme. Verwende ich statt dessen /bin/sh ./postinst wird ein Syntaxfehler angezeigt.
Folgendes würde ich nun gerne wissen:
- Warum verhält sich /bin/bash anhand der Art wie es aufgerufen wird unterschiedlich?
- Warum ignoriert apt-get die Shebang?
Gruß
Robert
Shebang wird ignoriert [gelöst]
Shebang wird ignoriert [gelöst]
Zuletzt geändert von twelve am 18.08.2014 02:05:07, insgesamt 1-mal geändert.
Re: Shebang wird ignoriert
Dir ist schon klar, dass die Shebang #! (Raute, Ausrufezeichen) ist und nicht nur ! (ein Ausrufezeichen)? Sofern das oben kein Tippfehler ist, wird !/bin/bash ignoriert (bzw. wird zu dem Syntaxfehler fuehren) und das Skript mit der Standard-/bin/sh ausgefuehrt. Dasselbe passiert, wenn ueberhaupt keine Shebang vorhanden ist:(man darf sich allerdings gerne fragen, warum die bash da keinen Dateinamen als Argument im ps-Output stehen hat... ja, die PID ist abweichend von der interaktiven Shell, es ist also nicht dieselbe)
Gruss Cae
Code: Alles auswählen
bash$ echo 'ps $$' >script
bash$ chmod +x script
bash$ ./script
PID TTY STAT TIME COMMAND
4594 pts/14 S+ 0:00 /bin/bash
bash$ sh
sh$ ./script
PID TTY STAT TIME COMMAND
4338 pts/14 S+ 0:00 /bin/sh ./script
sh$
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Shebang wird ignoriert
nur ! ist ein Fehler im Post. In den Skripten steht natürlich #!
Meine postinst beginnt mit:
Meine postinst beginnt mit:
Code: Alles auswählen
# !/bin/bash
# postinst script for %package_name%
#
# see: dh_installdeb(1)
...
Re: Shebang wird ignoriert
Wie gesagt, die Shebang ist #! als die ersten beiden Zeichen. Deine ersten beiden Zeichen im Skript sind "#" (Raute, Leerzeichen). Faellt dir etwas auf?
Falls du das "schoen" [1] schreiben willst, waere so etwas moeglich:oder auchAuch eine Leerzeile vor der Shebang waere verkehrt.
Gruss Cae
[1] ist Ansichtssache, ich finde, 'nen abgesetzter Interpreter sieht doof aus
Falls du das "schoen" [1] schreiben willst, waere so etwas moeglich:
Code: Alles auswählen
#! /bin/sh
Code: Alles auswählen
#! /bin/sh
Gruss Cae
[1] ist Ansichtssache, ich finde, 'nen abgesetzter Interpreter sieht doof aus
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Shebang wird ignoriert
Das war der Fehler
In der postrm war die Shebang richtig geschrieben...
Interessant finde ich allerdings, dass trotz des "korrigierten" Symlinks /bin/sh -> /bin/bash beim Ausführen von /bin/bash ./postinst ein Syntaxfehler angezeigt wurde.
Trotzdem besten Dank
Robert
In der postrm war die Shebang richtig geschrieben...
Interessant finde ich allerdings, dass trotz des "korrigierten" Symlinks /bin/sh -> /bin/bash beim Ausführen von /bin/bash ./postinst ein Syntaxfehler angezeigt wurde.
Trotzdem besten Dank
Robert