Am'm care rulează Ubuntu 11.04. Eu folosesc terminalul pentru a începe o petrecere sesiune, și vreau să adăugați o variabilă de mediu:
$r@hajt:~$ env THEVAR=/example
Dar's nu funcționează. Acesta arată toate variabilele cu MIHAIL fiind ultima, dar un alt apel la "mediu" nu arată MIHAIL
mai- env | grep MIHAIL
întoarce nimic.
În mod similar, script-uri cu export (export MIHAIL=/exemplu) sau alte sarcini variabile (MIHAIL=/exemplu
) nu't adăugați variabila de mediu.
Știu că am'm a face ceva greșit, știu că ar trebui să fie ceva simplu, dar nu pot't găsi ceea ce.
UPDATE: Sensul real de întrebarea mea a fost asta: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Oricum am'll alege cel mai votat răspuns și se lasă editat titlul -care a fost't ceea ce am cerut)
"mediu" ruleaza un program într-un modificate mediu, apoi respinge toate modificările.
Pentru a seta variabila doar pentru shell-ul curent:
VARNAME="my value"
Să-l setați pentru shell-ul curent și toate procesele început de la shell-ul curent:
export VARNAME="my value" # shorter, less portable version
Pentru a seta permanent pentru toate viitoarele bash sesiuni adăuga o astfel de linie a ta .bashrc
fișier în folderul$HOME` director.
Pentru a seta permanent, și la nivel de sistem (toți utilizatorii, toate procesele) se adaugă set de variabile din /etc/mediu:
sudo -H gedit /etc/environment
Acest fișier acceptă numai sarcini variabile, cum ar fi:
VARNAME="my value"
Nu folosesc "export" cheie aici.
Ai nevoie să te deconectezi de la curent de utilizator și autentificare din nou, astfel încât variabilele de mediu modificări să aibă loc.
Pentru a stabili o variabila de mediu o dată, folosesc "export" de comandă în linia de comandă, nu într-un shell script:
$ export THEVAR=/example
Variabila va fi stabilit pentru restul de coajă de sesiune sau până unset.
Pentru a stabili o variabila de mediu, de fiecare dată, folosesc "export" comanda .bashrc
de fișier (sau corespunzătoare fișier de inițializare pentru shell).
Pentru a stabili o variabila de mediu dintr-un script, folosesc "export" comandă în script-ul, și apoi "sursă" script-ul. Dacă executați script-ul nu va funcționa.
Pentru o explicație a diferenței dintre aprovizionare și de executare a vedea acest răspuns: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Permanent se adaugă o nouă variabilă de mediu în Ubuntu (testat numai în 14.04), utilizați următorii pași:
FOO=bar
, scrie `FOO=bar într-o nouă liniePentru a obține mediu/var modificările să persiste după scenariul a fost finalizată, va trebui să utilizați'source ./script.sh sau notația prescurtată pentru sursa, ".", ca . ./script.sh
Sursa va executa comenzile din script ca dacă ați tastat-le în... asa ca nu schimba unele aspecte ale script-ul, cum ar fi ieșirea... deci, dacă dumneavoastră controale script ceva și decide să ieși, dacă false, de exemplu, prin apelarea ieșire 0`, se va termina terminalul curent / sesiune de shell.
Dacă faci lucruri prin intermediul script-ul, o modalitate ușoară de a seta variabila de mediu este permanent pus mai jos declarație în scenariul tău,
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
Dacă aveți nevoie pentru a evaluage expresii ca pwd, puteți utiliza acest lucru, de exemplu,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Știu că's destul de târziu, dar dacă doriți să adăugați o variabilă de mediu pentru toți utilizatorii (de exemplu, JAVA utilizare) - puteți face următoarele:
Deschide /etc/bash.bashrc
folosind nano (puteți folosi orice editor, eu nu prefer VIM ca's cel mai rău atunci când vine vorba de ușurința în utilizare - nimic personal).
Adăugați la fișier:
export VAR=calea
export PATH=$PATH:/bin
3) (mai Bine dacă puteți sări cutie) - sau pur și simplu deschide o nouă sesiune SSH și confirmați cu
env' comandă.
DAR DACĂ doriți ca fiecare utilizator să aibă o setare pentru asta, trebuie să fac o schimbare (scenariu) a .bashrc
fișierul sub ~/.bashrc "(sau " /home/$USER/
dacă sunteți nou la sistemele Linux)