Ich habe diesen Befehl in einigen verschiedenen Shell-Skripten gesehen:
exec $SHELL -l
... normalerweise als Alternative zu:
source ~/.profile
Was genau exec $SHELL -l
macht das?
quelle
Ich habe diesen Befehl in einigen verschiedenen Shell-Skripten gesehen:
exec $SHELL -l
... normalerweise als Alternative zu:
source ~/.profile
Was genau exec $SHELL -l
macht das?
Der Befehl exec ersetzt das aktuelle Prozessabbild - die ausführbare Datei oder das ausführbare Programm - durch ein neues, das als Argument für exec benannt wird. Wenn $ SHELL wie üblich den Namen einer ausführbaren Datei enthält, dreht exec diese Exe anstelle der laufenden Shell.
Dies ist jedoch eine ganz andere Aktion als nur die Verwendung von "source" zum Einlesen einer Befehlsdatei. Der Quellbefehl liest die benannte Datei und führt den Inhalt zeilenweise aus, als würde er in die Befehlszeile der aktuellen Shell eingegeben.
Es ruft Ihre shell ( $SHELL
) als Login-Shell auf.
Auszug aus der Bash-Manpage
-l Make bash act as if it had been invoked as a login shell
(see INVOCATION below).
Ich empfehle, den Abschnitt INVOCATION der Manpage zu lesen, um weitere Informationen zu erhalten.
Unter dem Strich teilt es Bash mit, welche Dateien beim Aufrufen als Quelle verwendet werden sollen. Entweder das $HOME/.bash_profile
( -l
) oder das $HOME/.bashrc
( -i
).