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_NAME
sie 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_NAME
stattdessen 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
. setenv
gibt 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 env
Befehl ist sehr selten nützlich, außer in Shebang-Zeilen . Wenn es ohne Argumente aufgerufen wird, zeigt es die Umgebung an, export
macht 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 env
funktioniert auch ( VAR=value mycommand
läuft mycommand
mit VAR
set to value
, genau wie env VAR=value mycommand
) env
.Der Grund für die Verwendung von shebang ist, dass es eine PATH
Suche durchführt und beim Aufrufen mit einem Befehlsnamen nichts anderes tut. Der env
Befehl kann nützlich sein, um einen Befehl mit auszuführen nur ein paar Umgebungsvariablen mit-i
oder ohne Parameter zum Anzeigen der Umgebung, einschließlich Variablen mit ungültigen Namen, die von der Shell nicht importiert werden.
Gilles 'SO - hör auf böse zu sein'
quelle
VAR=asdf
Aktualisiert in modernen Shells die Umgebung, wenn sieVAR
sich bereits in der Umgebung befunden hat. (Dies war in der ursprünglichen Bourne-Shell nicht der Fall.)Es gibt mehrere Fragen mit Antworten, die dies beantworten:
Der Versuch .bashrc, env und export zu verstehen
Unterschied zwischen Umgebungsvariablen und exportierten Umgebungsvariablen in der Bash
Was ist der Unterschied in der Verwendung zwischen Shell-Variablen und Umgebungsvariablen?
Der Befehl bash setenv wurde nicht gefunden
(etc.)
quelle