export VARIABLE_NAME='some value'ist die Art und Weise eine Umgebungsvariable in jeder POSIX-kompatibelen Schale einzustellen ( sh, dash, bash, ksh, etc .; zsh auch). Wenn die Variable bereits einen Wert hat, können Sie export VARIABLE_NAMEsie zu einer Umgebungsvariablen machen, ohne ihren Wert zu ändern.
In Bourne-Shells vor POSIX wurde dies nicht unterstützt. Daher werden Skripts angezeigt, die vermieden export VARIABLE_NAME='some value'und VARIABLE_NAME='some value'; export VARIABLE_NAMEstattdessen verwendet werden. Aber Pre-POSIX-Bourne-Shells sind heutzutage äußerst selten.
setenv VARIABLE_NAME='some value'ist die csh-Syntax zum Festlegen einer Umgebungsvariablen. Anders als in sh setenv VARIABLE_NAME. setenvgibt es in sh nicht und csh wird in Skripten äußerst selten verwendet und wurde in den letzten 20 Jahren von bash für die interaktive Verwendung übertroffen (und zsh noch länger), sodass Sie es vergessen können, es sei denn, Sie stoßen darauf.
Der envBefehl ist sehr selten nützlich, außer in Shebang-Zeilen . Wenn es ohne Argumente aufgerufen wird, zeigt es die Umgebung an, exportmacht es aber besser (sortiert und oft in Anführungszeichen gesetzt, um Zeilenumbrüche von Zeilenumbrüchen zu trennen, die Werte trennen). Wenn es mit Argumenten aufgerufen wird, führt es einen Befehl mit zusätzlichen Umgebungsvariablen aus, aber ohne denselben Befehl envfunktioniert auch ( VAR=value mycommandläuft mycommandmit VARset to value, genau wie env VAR=value mycommand) env.Der Grund für die Verwendung von shebang ist, dass es eine PATHSuche durchführt und beim Aufrufen mit einem Befehlsnamen nichts anderes tut. Der envBefehl kann nützlich sein, um einen Befehl mit auszuführen nur ein paar Umgebungsvariablen mit-ioder ohne Parameter zum Anzeigen der Umgebung, einschließlich Variablen mit ungültigen Namen, die von der Shell nicht importiert werden.
VAR=asdfAktualisiert in modernen Shells die Umgebung, wenn sieVARsich bereits in der Umgebung befunden hat. (Dies war in der ursprünglichen Bourne-Shell nicht der Fall.)