export VARIABLE_NAME='some value'
jest sposób ustawić zmienną w każdej powłoce POSIX ( sh
, dash
, bash
, ksh
, itp .; również zsh). Jeśli zmienna ma już wartość, możesz ją export VARIABLE_NAME
uczynić zmienną środowiskową bez zmiany jej wartości.
Powłoki Bourne w wersjach wcześniejszych niż POSIX nie obsługiwały tego, dlatego zamiast tego zobaczysz skrypty, które unikają export VARIABLE_NAME='some value'
i używają VARIABLE_NAME='some value'; export VARIABLE_NAME
. Ale pociski Bourne'a sprzed POSIX-u są obecnie niezwykle rzadkie.
setenv VARIABLE_NAME='some value'
to składnia csh służąca do ustawiania zmiennej środowiskowej. setenv
nie istnieje w sh, a csh jest niezwykle rzadko używany w skryptach i został przekroczony przez bash do interaktywnego użytku przez ostatnie 20 lat (i zsh jeszcze dłużej), więc możesz o nim zapomnieć, chyba że go spotkasz.
env
Komenda jest bardzo rzadko przydatna wyjątkiem shebang linii . Po wywołaniu bez argumentów wyświetla środowisko, ale export
robi to lepiej (posortowane i często cytowane w celu ujednoznacznienia nowych linii w wartościach od linii oddzielających wartości). Po wywołaniu z argumentami uruchamia polecenie z dodatkowymi zmiennymi środowiskowymi, ale to samo polecenie env
również nie działa ( VAR=value mycommand
działa mycommand
z VAR
ustawionym na value
, tak jak env VAR=value mycommand
). Powód env
jest przydatny w linii shebang, ponieważ wykonuje PATH
wyszukiwanie, a przy wywołaniu z nazwą polecenia nic innego nie robi. env
Polecenie może być przydatne, aby uruchomić polecenie z zaledwie kilku zmiennych środowiskowych z-i
lub bez parametrów wyświetlających środowisko, w tym zmiennych o niepoprawnych nazwach, których powłoka nie importuje.
Gilles „SO- przestań być zły”
źródło
VAR=asdf
aktualizuje środowisko, jeśliVAR
było już w środowisku. (To nie było prawdą w oryginalnej powłoce Bourne'a.)Istnieje kilka pytań z odpowiedziami na to:
Próbuję zrozumieć .bashrc, env i export
Różnica między zmiennymi powłoki, które są eksportowane, a tymi, które nie są bash
Jaka jest różnica w użyciu między zmiennymi powłoki a zmiennymi środowiskowymi?
Nie znaleziono komendy bash setenv
Jaka jest różnica między „eksportem” a „setenvem”?
(itp.)
źródło