trap in bash funktioniert nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
stehjan
Beiträge: 5
Registriert: 02.10.2015 00:18:42

trap in bash funktioniert nicht

Beitrag von stehjan » 02.10.2015 00:31:33

Hallo,
Ich habe hier ein kleines Problem für das ich keine rechte Erklärung finde:

Code: Alles auswählen

#!/bin/bash
trap 'echo "SIGCHLD empfangen"' 17
thunar &
echo "warte"
wait
echo "warte nicht mehr"
exit 0
Dies ist ein kleines Test-Skipt über dessen Sinn man sich an anderer Stelle durchaus unterhalten könnte ;-) .
Mein Problem ist nun dass die Falle nicht zuschnappt, wenn ich das Skript ganz normal aus einem Terminal mit './Skript.sh' aufrufe. Rufe ich es aber mit 'sh ./Skript.sh' auf oder ändere ich die Shebang in '#!/bin/sh', dann funktioniert auch der trap-Befehl. Kann mir jemand auf die Sprünge helfen, warum das so ist? Meines (rudimentären) Wissens soll die Bourne-Shell (sh) unter LInux direkt auf die Bourne-Again-Shell (bash) verweisen. Sollte ich hier irgendwie falsch liegen, bitte berichtigt mich jemand.
Vielen Dank schon mal für die Mühe
Stephan

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: trap in bash funktioniert nicht

Beitrag von eggy » 02.10.2015 01:07:20

ls -lah /bin/sh sagt /bin/sh -> dash

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: trap in bash funktioniert nicht

Beitrag von newdeb » 02.10.2015 08:00:08

Wegen
If the -b option to the set builtin command is enabled, bash reports such changes immediately. Any trap on SIGCHLD is executed for each child that exits.
...
-b Report the status of terminated background jobs immediately, rather than before the next primary prompt. This is effective only when job control is enabled.
sollte es damit funktionieren:

Code: Alles auswählen

#!/bin/bash
set -mb

stehjan
Beiträge: 5
Registriert: 02.10.2015 00:18:42

Re: trap in bash funktioniert nicht

Beitrag von stehjan » 02.10.2015 12:30:19

Ja, so funktionierts, vielen Dank.
Ich war zwar überzeugt, dass es am Tag vorher auch in der obigen Version getan hat was es sollte, aber im Moment experimentiere ich soviel rum dass ich gar nicht mehr immer weiss wann und ob ich irgendwas verändert habe :wink:.

@newdeb: Den von Dir zitierten zweiten Abschnitt habe ich unter dem Abschnitt "set" in der bash-manpage gefunden. Verrätst Du mir wo der erste Abschnitt herstammt? Ich würde mir das gerne mal genauer anschauen.

@eggy: Vielen Dank für den Hinweis. Das erklärt natürlich wenigstens das unterschiedliche Verhalten.

Vielen Dank für Eure Mühe
Gruß
Stephan

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: trap in bash funktioniert nicht

Beitrag von newdeb » 02.10.2015 18:46:52

@newdeb: Den von Dir zitierten zweiten Abschnitt habe ich unter dem Abschnitt "set" in der bash-manpage gefunden. Verrätst Du mir wo der erste Abschnitt herstammt? Ich würde mir das gerne mal genauer anschauen.
Guck mal in der Sektion "JOB CONTROL". Das Zitat steht da im vorletzten Absatz.

stehjan
Beiträge: 5
Registriert: 02.10.2015 00:18:42

Re: trap in bash funktioniert nicht

Beitrag von stehjan » 02.10.2015 19:33:40

Gefunden!
Vielen Dank für die Info.
Gruß
Stephan

Antworten