Jaka jest różnica między set
, env
, declare
a export
gdy ustawienie zmiennej w Linux powłoki, takie jak bash
?
linux
bash
shell
shell-script
użytkownik3872279
źródło
źródło
Odpowiedzi:
Wygląda na to, że zbiór i deklaracja są nieco inne, a zbiór jest silniejszy.
Zobacz „deklaruj” pod https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins deklaruj: „Deklaruj zmienne i nadaj im atrybuty. Jeśli nie podano żadnych nazw, wyświetl wartości zmiennych zamiast.
Ustaw „set” pod https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: „To wbudowane jest tak skomplikowane, że zasługuje na swoją własną sekcję. Set pozwala na zmień wartości opcji powłoki i ustaw parametry pozycyjne lub wyświetl nazwy i wartości zmiennych powłoki. "
ENV to zmienna środowiskowa w Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env jest poleceniem Linuksa. Myślę, że to dobra informacja: /unix/103467/what-is-env-command-doing
Myślałem, że to dobre wytłumaczenie eksportu: http://www.unix.com/302531838-post2.html
Ponadto: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * eksport (z Bourne): „Zaznacz każdą nazwę do przekazania do procesów potomnych w środowisku”.
Pożycz kod z powyższego adresu URL:
źródło
declare
iset
ienv
? eksportować czy deklarować?Po pierwsze, musisz to zrozumieć
environment variables
ishell variables
to nie to samo.Następnie powinieneś wiedzieć, że powłoki mają atrybuty, które regulują ich działanie. Te atrybuty nie są zmiennymi środowiskowymi ani powłoki.
Teraz przejdźmy do odpowiedzi na twoje pytanie.
env
: bez opcji pokazuje bieżące zmienne środowiskowe wraz z ich wartościami; Można go jednak użyć do ustawienia zmiennej środowiskowej dla pojedynczego polecenia z-i
flagąset
: bez opcji, nazwa i wartość każdej zmiennej powłoki są wyświetlane * ~ od uruchomieniaman set
w rhel; może być również użyty do ustawienia atrybutu powłoki . To polecenie NIE ustawia zmiennej środowiskowej ani powłoki .declare
: bez żadnych opcji, taki sam jakenv
; może być również użyty do ustawienia zmiennej powłokiexport
: tworzy zmienne środowiskowe zmiennych powłokiW skrócie:
set
nie ustawia zmiennych powłoki ani środowiskaenv
może ustawić zmienne środowiskowe dla pojedynczego poleceniadeclare
ustawia zmienne powłokiexport
tworzy zmienne środowiskowe zmienne powłokiUWAGA
declare -x VAR=VAL
tworzy zmienną powłoki, a także eksportuje ją, czyniąc ją zmienną środowiskową.źródło