Was ist der Unterschied zwischen set
, env
, declare
und export
wenn eine Variable in einem Linux - Shell, wie Einstellung bash
?
linux
bash
shell
shell-script
user3872279
quelle
quelle
Antworten:
Es scheint, dass set und declare etwas unterschiedlich sind, wobei set mächtiger ist.
Siehe "declare" unter https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins declare: "Deklariere Variablen und gib ihnen Attribute. Wenn keine Namen angegeben sind, zeige die Werte der Variablen an stattdessen.
Set "set" unter https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: "Dieses eingebaute Programm ist so kompliziert, dass es einen eigenen Abschnitt verdient Ändern Sie die Werte der Shell-Optionen und legen Sie die Positionsparameter fest oder zeigen Sie die Namen und Werte der Shell-Variablen an. "
ENV ist eine Umgebungsvariable in Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env ist ein Linux-Befehl. Ich denke, dies ist eine gute Referenz: /unix/103467/what-is-env-command-doing
Ich dachte, dies sei eine gute Erklärung für den Export: http://www.unix.com/302531838-post2.html
Außerdem: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * export (von Bourne): "Markieren Sie jeden Namen, der an untergeordnete Prozesse in der Umgebung übergeben werden soll."
Code von obiger URL ausleihen:
quelle
declare
undset
undenv
? Export vs deklarieren?Erstens müssen Sie das verstehen
environment variables
undshell variables
sind nicht dasselbe.Dann sollten Sie wissen, dass Shells Attribute haben , die bestimmen, wie es funktioniert. Diese Attribute sind keine Umgebungs- oder Shell-Variablen.
Nun zur Beantwortung Ihrer Frage.
env
: Zeigt ohne Optionen die aktuellen Umgebungsvariablen mit ihren Werten an. Kann jedoch verwendet werden, um Umgebungsvariablen für einen einzelnen Befehl mit dem-i
Flag festzulegenset
: ohne Optionen werden der Name und der Wert jeder Shell-Variablen angezeigt * ~,man set
wenn sie in rhel ausgeführt werden; kann auch verwendet werden, um das Shell-Attribut festzulegen . Dieser Befehl setzt NICHT die Umgebungsvariable oder die Shell-Variable .declare
: ohne Optionen, dasselbe wieenv
; kann auch verwendet werden, um die Shell-Variable zu setzenexport
: Erstellt Umgebungsvariablen für Shell- VariablenZusamenfassend:
set
setzt weder Shell noch Umgebungsvariablenenv
kann Umgebungsvariablen für einen einzelnen Befehl festlegendeclare
Setzt Shell-Variablenexport
macht Shell-Variablen UmgebungsvariablenHINWEIS
declare -x VAR=VAL
erstellt die Shell-Variable und exportiert sie auch, wodurch sie zur Umgebungsvariablen wird.quelle