Servus,
^D ist kein Signal, sondern bedeutet „flush(current_fd)
“. Ist hier bei Stack Overflow schön erklärt. Oder, was man auch mal erwähnen kann: Im schönen Klassiker The Unix Programming Environment auf Seite 45. 😉 „kill
“ hilft dir jedenfalls nicht weiter.
Aber ich lese dein Problem so, dass du eigentlich gar nicht in die Problematik rennen solltest, wenn du es etwas anders aufziehst. Entweder, du startest das Terminal und gibst ihm direkt zu verstehen: „Starte eine Shell, die mein Skript startet, und sonst nichts weiter.“ Die Shell brauchst du wohl, damit deine „weiteren, vorgegebenen Aktionen“ ausgeführt werden, von denen ich annehme, dass sie in deiner „~/.bash_logout
“ oder ähnlich definiert sind.
xterm -e 'bash --login -c "/pfad/zu/deinem/skript.sh; exit"'
Andere Möglichkeit wäre, dein Terminal ganz normal zu starten und dann das Skript nicht in einer Subshell, sondern in der aktuellen laufen zu lassen und am Ende des Skripts explizit ein „exit
“ zu setzen. Dazu dient der einzelne Punkt bzw. „source
“ (– edit: Ja, „exec
“ ist besser, dann muss es kein Shellskript sein).
. /pfad/zu/deinem/skript.sh
Vielleicht treffe ich aber auch zu viele Annahmen. Im Zweifel beschreibe mal genauer, was diese „vorgegebenen Aktionen“ sind, wodurch sie ausgelöst werden und so weiter. Denn die sind ja der Knackpunkt, nich’?