Hallo,
was genau ist der Unterschied beim Start eines Scripts durch
./baschskript
bash bashskript
exec bashskript
Vielen Dank im Voraus
Bashskript starten
Re: Bashskript starten
Dadurch startet man einen neuen Prozess mit der angegebenen ausführbaren Datei im aktuellen Verzeichnis ("./"). Das bedeutet, dass das Skript mit #!/Pfad/zum/Interpreter beginnen muss und Ausführrechte für den Benutzer vorliegen müssen.martini wrote: ./baschskript
Dadurch startet man einen neuen Bash-Prozess und übergibt dem den Namen "bashskript" als ersten Parameter. Bash deutet das so, dass es ein Skript mit diesem Namen im aktuellen Verzeichnis suchen und dann im soeben gestarteten Bash-Interpreter ablaufen lassen soll.bash bashskript
Das ist analog zum Fall 1, allerdings mit zwei Unterschieden: Zum einen fehlt der absolute Pfad, so dass das Verzeichnis, in dem sich bashskript befindet, in PATH erwähnt sein muss. Zum anderen wird kein neuer Prozess gestartet, sondern stattdessen der aktuelle Bash-Prozess in den Prozess, der hinter "bashskript" steckt (in dem Fall also vermutlich eine neue Bash) umgewandelt. Das heißt: Die Prozessnummer bleibt gleich, aber das Image der ausführbaren Datei ändert sich. Einige Prozessvariablen wie das Environment werden allerdings übergeben. Siehe execve(2).exec bashskript
Diese Konstruktion wird oft benutzt, um keine Reste eines Initskripts rumliegen zu haben.
Außerdem gibt es noch den Fall
Code: Select all
. bashskript
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.