Es darbojos Ubuntu 11.04. Es izmantoju termināli, lai sāktu bash sesiju, un es gribu pievienot vides mainīgo:
$r@hajt:~$ env THEVAR=/example
Bet tas nedarbojas. Tiek parādīti visi mainīgie, un THEVAR ir pēdējais, bet, izsaucot env
, THEVAR
vairs netiek parādīts - env | grep THEVAR
neko neatgriež.
Tāpat arī skripti ar eksportēšanu (export THEVAR=/example
) vai citu mainīgo piešķiršanu (THEVAR=/example
) nepievieno vides mainīgo.
Es zinu, ka kaut ko daru nepareizi, es zinu, ka tam vajadzētu būt kaut kam vienkāršam, bet es nevaru atrast, kas.
UPDATE: Mana jautājuma īstā nozīme bija šāda: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell.
(Jebkurā gadījumā es'izvēlēšos visvairāk balsojušo atbildi un atstāju rediģēto nosaukumu -tā nebija tas, ko es jautāju)
env
palaiž programmu modificētā vidē, pēc tam atceļ visas izmaiņas.
Mainīgā lieluma iestatīšana tikai pašreizējam apvalkam:
VARNAME="my value"
Lai iestatītu to pašreizējai čaulā un visiem procesiem, kas sākti no pašreizējās čaulas:
export VARNAME="my value" # shorter, less portable version
Lai iestatītu to pastāvīgi visām turpmākajām bash sesijām, pievienojiet šādu rindu savam .bashrc
failam savā $HOME
direktorijā.
Lai iestatītu to pastāvīgi un visai sistēmai (visiem lietotājiem, visiem procesiem), pievienojiet mainīgo set /etc/environment:
sudo -H gedit /etc/environment
Šis fails pieņem tikai tādus mainīgo piešķīrumus kā:
VARNAME="my value"
Šeit neizmantojiet atslēgas vārdu export
.
Jums ir jāiziet no pašreizējā lietotāja un atkal jāpiesakās, lai notiktu vides mainīgo izmaiņas.
Lai iestatītu vides mainīgo vienreiz, izmantojiet export
komandu uzvednē, nevis čaulas skriptu:
$ export THEVAR=/example
Mainīgais tiks iestatīts uz visu atlikušo čaulas sesijas laiku vai līdz brīdim, kad tas tiks atiestatīts.
Lai iestatītu vides mainīgo katru reizi, izmantojiet export
komandu .bashrc
failā (vai jūsu čaulas inicializācijas failā).
Lai iestatītu vides mainīgo no skripta, skripta sastāvā izmantojiet export
komandu un pēc tam skriptu source
. Ja skriptu izpildīsiet, tas nedarbosies.
Skaidrojumu par atšķirību starp sourcing un executing skatiet šajā atbildē: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788.
Lai pastāvīgi pievienotu jaunu vides mainīgo Ubuntu (pārbaudīts tikai 14.04 versijā), veiciet šādas darbības:
sudo -H gedit /etc/environment
FOO=bar
, tad vienkārši ierakstiet FOO=bar
jaunā rindā.