Varijable okruženja u Linuxu. Varijabla okruženja PATH Kako dodati program na stazu linux-a

Šta je to? Mnoge naredbe koje unosite u komandnoj liniji zahtijevaju korištenje eksternog programa učitanog iz sistema datoteka. Na primjer, komande kao što su mkdir i wc su zapravo u /bin folderu.

Kada unesete izjavu koju Bash ljuska ne prepoznaje, ona pokušava da je izvrši kao program i vraća grešku ako ne pronađe program sa tim imenom. I to se ne odnosi samo na osnovne komande koje smo razmatrali, jer od komandna linija možete pokrenuti bilo koji program.


Ali kako Linux zna koje programe treba pokrenuti iz kojih direktorija, s obzirom na prisutnost u sistemu datoteka? OS koristi varijablu sistemskog okruženja da specificira podskup foldera u koje treba tražiti kada primi nepoznatu komandu. Ova varijabla se zove PATH i može se prikazati sa sljedećom eho komandom (simbol $ je obavezan):

echo $PATH

Izlaz ove naredbe će izgledati kao sljedećih sedam apsolutnih putanja foldera, odvojenih dvotočkama:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Svaki put kada unesete nepoznatu naredbu, Linux će pregledati svaki od foldera navedenih u varijabli okruženja, redoslijedom kojim su specificirani, tražeći program s istim imenom. Ako se program pronađe, pokreće se; u suprotnom, prikazuje se poruka o grešci. Ali neće biti greška ako svoje voljene srebrne prstenje kupite na poklon. Srebro će krasiti svaku ženu!

Ovih sedam fascikli omogućavaju lak pristup svim glavnim programima u operativnom sistemu, uključujući . Bilo koji program izvan ovih sedam foldera ne može se pokrenuti jednostavnim upisivanjem njihovog imena u komandnu liniju.

Na primjer, preuzeli ste uslužni program dnevnika sa Interneta u svoju kućnu fasciklu. Ako unesete njegovo ime u komandnu liniju, dobićete grešku jer se nalazi u fascikli koja nije uključena u sistemsku putanju. Da biste pokrenuli ovaj program, unesite sljedeći red (zapamtite da je simbol ~ skraćenica za vašu kućnu mapu):

Ako ste ga sačuvali u fascikli izvan vaše navedene putanje, moraćete da unesete apsolutnu putanju i ime datoteke da biste pokrenuli uslužni program.

Naravno, pretpostavlja se da je dnevnik jednostavan samostalni program koji ne zahtijeva instalaciju, jer će većina glavnih aplikacija smjestiti izvršnu datoteku programa negdje na vašu specificiranu putanju tokom procesa instalacije. Volim ovo PATH varijabla okruženja, uživajte u svom zdravlju!

Varijable okruženja ( varijabla okruženja) se koriste za pohranjivanje uobičajenih vrijednosti varijabli u skriptama i programima. Takve varijable se mogu postaviti na određeni vremenski period, na primjer, za period rada određene terminalske ljuske, ili za period korisničke sesije, ili možete postaviti varijablu okruženja na globalnom nivou - za cijeli sistem .

Varijable okruženja

$HOME
Varijabla sadrži putanju do kućnog direktorija trenutnog korisnika. $USER
Trenutno korisničko ime $PATH
Lista direktorija za ljusku za traženje izvršnih programa. $PWD
Put do trenutnog radnog direktorija (ili pwd). Primjer: dir_path=$(pwd) . $SHELL
Zadani tumač $RANDOM
Generiše nasumični broj 0..32767 svaki put kada se pristupi varijabli. $SECONDS
Vrijeme u sek. od početka ljuske. $? Rezultat prethodne naredbe. $HOSTNAME
Ime računara $HISTFILE
Put do $IFS datoteke istorije tumača
Lista znakova za razdvajanje komandi, parametara, elemenata niza (podrazumevano: razmak, tab, novi red) $PS1
Predložak stringa upita tumača.

Privremeno postavljanje varijable okruženja

Postavljanje varijable okruženja za period sesije:

# Za novi proces env varname=vrijednost [naredba] # Za trenutnu ljusku i sve njene podprocese izvezite varname=vrijednost [naredba]

Vrijednost varijable se zadržava do ponovnog pokretanja sistema.

Postavljanje konstantne vrijednosti

Varijable okruženja na nivou sistema se postavljaju putem datoteke /etc/environment:

OKRUŽENJE="dev"

Postavljanje varijable okruženja specifične za korisnika putem ~/.bashrc ili ~/.bash_profile:

PATH="$(PATH):/home/user/bin:"

Pažnja!

Datoteka ~/.bash_profile će se izvršiti kada se interpretator pokrene sa opcijom -l. Kada ste prijavljeni lokalno, ovaj fajl nije čitljiv!

Također morate imati na umu da će promjene stupiti na snagu tek nakon ponovnog pokretanja sesije!

Pregled vrijednosti varijable okruženja

Da vidite vrijednost varijable okruženja, koristite naredbu printenv:

Printenv<имя_переменной>

#shell, #bash, #environment

AIR SDK sadrži nekoliko programa koje možete pokrenuti iz komandne linije ili prozora terminala. Pokretanje ovih programa je mnogo pogodnije ako definirate putanju do SDK-ovog bin direktorija koristeći varijablu okruženja Path.

Ovaj odjeljak pruža opći opis procedure za postavljanje putanje na Windows, Mac i Linux. Međutim, konfiguracije računara mogu se značajno razlikovati, tako da ova procedura možda neće raditi na svim sistemima. U tom slučaju, informacije koje su vam potrebne možete pronaći u dokumentaciji operativnog sistema ili na Internetu.

Postavljanje varijable PATH okruženja na Linux i Mac OS koristeći Bash shell

Kada se naredba unese u prozor terminala, ljuska (program koji čita komande koje se unose i pokušava da odgovori na odgovarajući način) mora prvo pronaći program komande u sistemu datoteka. Shell traži komande u listi direktorija, koja je pohranjena u varijablu okruženja pod nazivom $PATH. Da vidite trenutnu vrijednost varijable putanje, otkucajte sljedeću naredbu:

echo $PATH

Prikazaće se lista direktorijuma odvojena dvotočkom, otprilike ovako:

/usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/x11/bin

Put do AIR SDK bin direktorija mora se dodati na ovu listu kako bi ljuska mogla pronaći ADT i ADT alate. Recimo da se AIR SDK nalazi u /Users/fred/SDKs/AIR direktoriju. U ovom slučaju, sljedeća naredba se koristi za dodavanje potrebnih direktorija u varijablu okruženja putanje:

Izvezi PATH=$PATH:/Users/fred/SDKs/AIR/bin:/Users/fred/SDKs/android/tools

Bilješka. Ako putanja sadrži znakove razmaka, njima mora prethoditi obrnuta kosa crta, kao što je prikazano u nastavku:

/Users/fred\ jones/SDKs/AIR\ 2.5\ SDKs/bin

Da biste provjerili rezultate dodavanja, možete ponovo pokrenuti naredbu echo:

Echo $PATH /usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/x11/bin:/Users/fred/SDKs/AIR/bin:/Users/fred/SDKs/android/ alata

Direktoriji su uspješno dodani. Sada možete pozvati sljedeće komande i dobiti tačan odgovor:

Adt-verzija

Ako je varijabla okoline $PATH ispravno promijenjena, naredba bi trebala ispisati verziju ADT okruženja.

Međutim, postoji jedan problem: kada otvorite novi prozor terminala, primijetit ćete da varijabla puta više ne sadrži nove elemente koji su joj prethodno dodani. Naredba za postavljanje putanje mora se pokrenuti svaki put kada pokrenete novi terminal.

Uobičajeno rješenje ovog problema bilo bi dodavanje naredbe jednoj od skripti za pokretanje koju koristi ljuska. Na Mac OS-u možete kreirati datoteku .bash_profile u direktoriju ~/username koja će se pokrenuti svaki put kada otvorite novi prozor terminala. U Ubuntu-u, skripta koja se pokreće kada se otvori novi prozor terminala je .bashrc. U drugima Linux distribucije i školjke, vrijede slična pravila.

Procedura za dodavanje naredbe skripti za pokretanje ljuske

    Promijenite svoj početni direktorij:

    Kreirajte profil konfiguracije ljuske (ako je potrebno) i preusmjerite ulazni tekst na kraj datoteke pomoću naredbe cat >>. Koristite odgovarajuću datoteku za svoje operativni sistem i školjke. Na primjer, možete koristiti .bash_profile na Mac OS-u i .bashrc na Ubuntu-u.

    Mačka >> .bash_profile

    Unesite tekst koji želite da dodate u fajl:

    Izvezi PATH=$PATH:/Users/cward/SDKs/android/tools:/Users/cward/SDKs/AIR/bin

    Završite preusmjeravanje teksta pritiskom na tipke CTRL-SHIFT-D na tastaturi.

    Prikažite datoteku da provjerite da li je operacija ispravno izvedena:

    Cat .bash_profile

    Otvorite novi prozor terminala da provjerite putanju:

    echo $PATH

    Dodati elementi bi trebali biti prikazani na ekranu.

Ako se kasnije kreira nova verzija jedan od SDK-ova koji treba staviti u drugi direktorij, naredba za postavljanje putanje u konfiguracijskoj datoteci će se morati ažurirati u skladu s tim. U suprotnom, shell će nastaviti koristiti staru verziju.

Postavljanje PATH varijable okruženja na Windows

Kada se otvori komandni prozor na Windows-u, on nasljeđuje globalne varijable okruženja definirane u svojstvima sistema. Jedna važna varijabla je varijabla putanja, koja sadrži listu direktorija u kojima se traži uneseni program. Da biste vidjeli trenutnu listu direktorija u varijabli putanje, možete upisati sljedeću naredbu u komandni prozor:

setpath

Ovo će dati listu direktorija odvojenih dvotočkama koja izgleda otprilike ovako:

Put=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem

Put do AIR SDK bin direktorija mora se dodati na ovu listu kako bi program za naredbe mogao pronaći ADT i ADT alate. Pretpostavimo da se AIR SDK nalazi u direktoriju C:\SDKs\AIR. U ovom slučaju, putanja se može dodati na sljedeći način:

    U odeljku Kontrolna tabla otvorite dijalog Svojstva sistema ili kliknite desnim tasterom miša na ikonu My Computer i izaberite Svojstva iz menija.

    Na kartici Napredno kliknite na dugme Promenljive okruženja.

    U odeljku Sistemske varijable dijaloškog okvira Varijable okruženja izaberite element Putanja.

    Kliknite na dugme Promeni.

    Pomaknite se na kraj reda u polju Vrijednost varijable.

    Na samom kraju trenutne vrijednosti unesite sljedeći tekst:

    ;C:\SDKs\AIR\bin

    Pritisnite dugme "OK" u svemu dijaloški okviri da sačuvate putanju.

Ako su u ovom trenutku otvoreni komandni prozori, promjene na njih neće biti primijenjene. Otvorite novi komandni prozor i upišite sljedeću naredbu da biste bili sigurni da je varijabla okruženja ispravno postavljena:

Adt-verzija

Ako se lokacija AIR SDK-a kasnije promijeni ili se doda nova verzija, varijabla okruženja putanje će se morati promijeniti u skladu s tim.

Pitam se gdje treba dodati novu putanju varijablu okruženja PATH. Znam da se to može uraditi uređivanjem .bashrc (na primjer), ali nije jasno kako.

ovako:

Izvezi PATH=~/opt/bin:$PATH

Izvezi PATH=$PATH:~/opt/bin

11 odgovora

jednostavan materijal

PATH=$PATH:~/opt/bin PATH=~/opt/bin:$PATH

ovisno o tome želite li dodati ~/opt/bin na kraju (za pretraživanje svih ostalih direktorija ako postoji program s istim imenom u više direktorija) ili na početku (da pretražujete prije svih ostalih direktorija).

Možete dodati više unosa u isto vrijeme. PATH=$PATH:~/opt/bin:~/opt/node/bin ili promjene u usporedbi sasvim u redu.

Ne morate da izvozite ako je promenljiva već u okruženju: svaka promena vrednosti varijable se odražava u okruženju.¹ PATH je skoro uvek u okruženju; Sve unix sistemi instalirajte ga vrlo rano (u stvari, obično u prvom procesu).

Ako vaš PATH kreira mnogo različitih komponenti, možete završiti s duplim unosima. Pogledajte Kako dodati stazu matičnog direktorija koju će otkriti Unix, koja naredba? i Uklonite duple unose $PATH sa awk komandom da biste izbjegli dupliciranje ili ih uklonili.

Gdje staviti

Imajte na umu da ~/.bash_rc ne može čitati nijedan program, a ~/.bashrc je konfiguraciona datoteka za interaktivne bash instance. Ne biste trebali definirati varijable okruženja u ~/.bashrc. Ispravno mjesto za definiranje varijabli okruženja kao što je PATH je ~/.profile (ili ~/.bash_profile ako ne volite ljuske osim bash). Pogledajte Koja je razlika između njih i koju da koristim?

Napomene o ne-bash školjkama

U bash, ksh i zsh, izvoz je posebna sintaksa, a i PATH=~/opt/bin:$PATH i export PATH=~/opt/bin:$PATH rade pravu stvar čak. U drugim Bourne/POSIX školjkama, kao što je crtica (koja je /bin/sh na mnogim sistemima), export se analizira kao normalna naredba, što implicira dvije razlike:

  • ~ se raščlanjuje samo na početku riječi, osim za dodjelu (pogledajte Kako da dodam putanju u početni direktorij koji će otkriti Unix za koji je potrebna naredba? ;
  • $PATH vanjski dvostruki navodniki se prekidaju ako PATH sadrži razmake ili \[*? .

Dakle, u školjkama kao što je crtica, export PATH=~/opt/bin:$PATH postavlja PATH na literalni niz ~/opt/bin/: nakon čega slijedi vrijednost PATH do prvog mjesta. PATH=~/opt/bin:$PATH (jednostavna dodjela) ne zahtijeva navodnike i radi pravu stvar. Ako želite da koristite izvoz u prenosivoj skripti, morate napisati export PATH="$HOME/opt/bin:$PATH" ili PATH=~/opt/bin:$PATH export PATH (ili PATH=$HOME/opt /bin: $PATH izvoz PATH za prenosivost čak i na Bourne školjku, koja ne prihvata eksport var=vrijednost i nije izvršila proširenje tilde).

¹ Ovo nije bilo tačno za Bourneove ljuske (kao što je Bourne školjka, a ne moderne školjke u POSIX stilu), ali je malo verovatno da ćete ovih dana naići na te stare ljuske. Sub>

U svakom slučaju radi, ali ne rade istu stvar: PATH elementi se provjeravaju s lijeva na desno. U prvom primjeru izvršne datoteke u ~/opt/bin će imati prednost nad onima postavljenim u /usr/bin, na primjer, što može, ali ne mora biti ono što želite.

Konkretno, opasno je sa sigurnosne tačke gledišta dodavati putanje na početak, jer ako neko može dobiti pristup pisanju vašem ~/opt/bin , može staviti drugi ls, na primjer, koji ćete vjerovatno koristiti umjesto /bin /ls bez primjedbe. Sada zamislite da uradite isto za ssh ili svoj pretraživač ili izbor... (Tri puta stavite isto na svoju putanju.)

Zbunjen sam oko pitanja 2 (pošto je uklonjeno iz pitanja jer se odnosilo na nepovezano pitanje):

Šta efikasan metod dodavanje dodatnih putanja različitim linijama? U početku sam mislio da bi ovo moglo pomoći:

export PATH=$PATH:~/opt/bin export PATH=$PATH:~/opt/node/bin

Ali to nije zato što druga dodjela ne dodaje samo ~/opt/node/bin , već i prethodno dodijeljenu PATH .

Ovo je moguće rješenje:

Izvezi PATH=$PATH:~/opt/bin:~/opt/node/bin

Ali radi čitljivosti, radije bih imao jedno odredište po putanji.

Ako kažeš

PATH=~/opt/bin

Ovo sve, koji će biti u vašem PATH. PATH je samo varijabla okruženja i ako želite da dodate u PATH morate ponovo izgraditi varijablu sa tačno onim sadržajem koji želite. Odnosno, ono što dajete kao primjer za pitanje 2 je upravo ono što želite da uradite, ako nisam potpuno promašio poentu pitanja.

Koristim oba oblika u svom kodu. Imam generički profil koji instaliram na svakom stroju na kojem radim, a koji izgleda ovako da ugošćuje direktorije koji potencijalno nedostaju:

Izvezi PATH=/opt/bin:/usr/local/bin:/usr/contrib/bin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11 # dodaj opcione stavke na putanju za bindir u $HOME/local/bin $HOME/bin; uradi ako [ -d $bindir ]; onda PATH=$PATH:$(bindir) fi urađeno

Linux definira izvršnu putanju za pretraživanje s varijablom okruženja $PATH. Da dodate direktorij /data/myscripts na početak varijable okoline $PATH, koristite sljedeće:

PATH=/data/myscripts:$PATH

Da dodate ovaj direktorij na kraj staze, koristite sljedeću naredbu:

PATH=$PATH:/data/myscripts

Ali prethodni nisu dovoljni, jer kada postavite varijablu okruženja unutar skripte, ta promjena stupa na snagu samo unutar skripte. Ovo ograničenje je ograničeno na dva načina:

  • Ako izvezete varijablu okruženja unutar skripte, ona je efikasna unutar bilo kojeg programa koji skripta poziva. Imajte na umu da ovo nije efikasno u programu koji je pozvao skriptu.
  • Ako program koji poziva skriptu to učini uključivanjem umjesto pozivanjem, sve promjene okruženja u skripti su efikasne u programu koji poziva. Ovo uključivanje se može obaviti komandom tačka ili izvornom komandom.

$HOME/myscript.sh izvor $HOME/myscript.sh

Uključivanje u osnovi uključuje "pozvanu" skriptu u "pozivajuću" skriptu. Ovo je slično #include u C. Dakle, djelotvorno je unutar skripte ili pozivajućeg programa. Ali, naravno, ovo nije efikasno za programe ili skripte koje poziva program koji poziva. Da biste ga učinili efikasnim do lanca poziva, morate pratiti postavku varijable okruženja pomoću naredbe za izvoz.

Kao primjer, bash shell program uključuje sadržaj datoteke .bash_profile nakon uključivanja. Dakle, stavite sljedeća 2 reda u .bash_profile:

PATH=$PATH:/data/myscripts izvoz PATH

efektivno stavlja te 2 linije koda u bash program. Dakle, u bash varijabla$PATH uključuje $HOME/myscript.sh , i zbog naredbe za izvoz, svi programi koje poziva bash imaju promijenjenu varijablu $PATH. A pošto se svi programi koje pokrenete iz bash prompt-a pozivaju bash-om, nova putanja se primjenjuje na sve što pokrenete iz bash prompt-a.

Suština je da da biste dodali novi direktorij stazi, trebate dodati ili dodati direktorij u varijablu okruženja $PATH u skripti uključenoj u ljusku i morate izvesti varijablu okruženja $PATH.

Već neko vrijeme držim sa sobom dvije funkcije pathadd i pathrm , koje vam pomažu da dodate elemente u putanju bez brige o dupliciranju.

pathadd uzima jedan argument putanje i opcioni argument nakon koji će, ako se doda, biti dodan u PATH , inače će ga dodati.

U bilo kojoj situaciji, ako dodajete putanju, vjerovatno želite da poništite sve što je već u putanji, zbog čega ja radije dodam zadanu.

Pathadd() ( newelement=$(1%/) if [ -d "$1" ] && ! echo $PATH | grep -E -q "(^|:)$newelement($|:)" ; onda ako [ " $2" = "posle" ] ; zatim PATH="$PATH:$newelement" else PATH="$newelement:$PATH" fi fi ) pathrm() ( PATH="$(echo $PATH | sed -e "s; \(^\|:\)$(1%/)\(:\|\$\);\1\2;g" -e "s;^:\|:$;;g" -e "s ;::;:;g")" )

Stavite ih u bilo koju skriptu koju želite da promijenite PATH okruženje i sada možete krenuti.

pathadd "/foo/bar" pathadd "/baz/bat" nakon izvoza PATH

Garantovano je da nećete dodati putanju ako već postoji. Ako želite da se /baz/bat pokrene na početku.

Putanja "/baz/bat" pathadd "/baz/bat" izvoz PATH

Sada se bilo koja putanja može pomjeriti naprijed ako je već na stazi bez udvostručavanja.

Neprobojni način dodavanja/predtretiranja

Mnogo je razmatranja uključenih u izbor dodavanja i dodavanja. Mnogi od njih su obuhvaćeni drugim odgovorima, tako da ih neću ponavljati ovdje.

Važna stvar je da čak i ako sistemske skripte ne koriste ovo (pitam se zašto) * 1, neprobojan način za dodavanje putanje (npr. $HOME/bin) varijablu okruženja PATH

PATH="$(PATH:+$(PATH):)$HOME/bin"

za dodavanje (umjesto PATH="$PATH:$HOME/bin") i

PATH="$HOME/bin$(PATH:+:$(PATH))"

dodati (umjesto PATH="$HOME/bin:$PATH")

Ovim se izbjegava lažna početna/završna dvotočka kada je $PATH inicijalno prazan, što može imati neželjene nuspojave i može biti noćna mora za neuhvatljivo pronalaženje (ovaj odgovor se ukratko bavi slučajem nezgodnog puta).

$(parametar:+riječ)

Ako je parametar null ili nije postavljen, ništa se ne zamjenjuje, inače se zamjenjuje riječ.

Dakle, $(PATH:+$(PATH):) se proširuje na: 1) ništa ako je PATH null ili nije postavljen, 2) $(PATH): ako je PATH postavljen.

Bilješka. Ovo je za bash.

*1 Upravo sam otkrio da skripte poput devtoolset-6/enable zapravo koriste ovo $ cat /opt/rh/devtoolset-6/enable # Izvoz varijabli opšteg okruženja PATH=/opt/rh/devtoolset-6/root/usr /bin$ (PATH:+:$(PATH)) ...

Ne mogu da govorim za druge distribucije, ali Ubuntu ima datoteku /etc/environment koja je podrazumevana putanja za pretragu za sve korisnike. Pošto moj računar koristim samo ja, tamo stavljam sve direktorijume koje želim na svom putu, osim ako je to privremeni dodatak koji sam stavio u skriptu.

Za mene (na Mac OS X 10.9.5) dodavanje imena putanje (npr. /mypathname) u /etc/paths datoteku je dobro funkcioniralo.

Prije uređivanja, vraća se echo $PATH:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Nakon uređivanja /etc/paths i ponovnog pokretanja ljuske, varijabla $PATH se dodaje sa /pathname. Zaista, echo $PATH vraća:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/mypathname

Desilo se da je /mypathname dodan promenljivoj $PATH.

Varijable okruženja u Linuxu su posebne varijable koje definira ljuska i koriste ih programi tokom izvršavanja. Mogu ih definirati sistem i korisnik. Sistemske varijable okruženja Linux definira sistem i koriste ih programi na nivou sistema.

Na primjer, naredba PWD koristi sistemsku varijablu da zadrži stari radni direktorij. Varijable korisničkog okruženja postavlja korisnik, za trenutnu ljusku, privremeno ili trajno. Cijeli koncept dodavanja i uklanjanja varijabli ljuske vrti se oko više datoteka, naredbi i raznih školjki.

U širem smislu, varijabla okruženja može biti tri tipa:

1. Lokalne varijable okruženja

Ove varijable su definirane samo za trenutnu sesiju. Oni će biti trajno izbrisani nakon završetka sesije, bilo da daljinski pristup ili emulator terminala. Oni se ne pohranjuju ni u jednom fajlu, već se kreiraju i brišu pomoću posebnih naredbi.

2. Korisničke varijable ljuske

Ove varijable Linux ljuske definirane su za određenog korisnika i učitavaju se svaki put kada se korisnik prijavi koristeći lokalni terminal, ili se poveže na daljinu. Takve varijable se obično pohranjuju u konfiguracijskim datotekama: .bashrc, .bash_profile, .bash_login, .profile ili druge datoteke koje se nalaze u korisničkom direktoriju.

3. Varijable sistemskog okruženja

Ove varijable su dostupne u cijelom sistemu, za sve korisnike. Oni se učitavaju pri pokretanju sistema iz konfiguracionih fajlova sistema: /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.

Konfiguracijske datoteke varijabli Linux okruženja

Ovdje ćemo brzo pogledati različite gore navedene konfiguracijske datoteke, koje se koriste za postavljanje varijabli okruženja za cijeli sistem ili određenog korisnika.

.bashrc

Ovo je korisnički specifičan fajl varijabli. Učitava se svaki put kada korisnik kreira terminalsku sesiju, odnosno, drugim riječima, otvori novi terminal. Sve varijable okruženja kreirane u ovoj datoteci stupaju na snagu svaki put kada se pokrene nova sesija terminala.

.bash_profile

Ove varijable stupaju na snagu svaki put kada se korisnik poveže na daljinu preko SSH-a. Ako ovaj fajl nedostaje, sistem će tražiti .bash_login ili .profile.

/etc/environment

Ova datoteka je za kreiranje, uređivanje i brisanje bilo koje varijable okruženja na nivou sistema. Varijable okruženja kreirane u ovoj datoteci dostupne su za cijeli sistem, za svakog korisnika, pa čak i kada su povezani na daljinu.

/etc/bash.bashrc

Sistem bashrc. Ova datoteka se izvršava za svakog korisnika, svaki put kada kreira novu terminalsku sesiju. Ovo radi samo za lokalne korisnike, kada su povezani putem interneta, takve varijable neće biti vidljive.

/etc/profile

Profil sistemske datoteke. Sve varijable u ovoj datoteci dostupne su svakom korisniku na sistemu samo ako je prijavljen na daljinu. Ali oni neće biti dostupni prilikom kreiranja lokalne terminalske sesije, tj. ako samo otvorite terminal.

Sve varijable Linux okruženja kreirane ovim datotekama mogu se ukloniti jednostavnim brisanjem odatle. Tek nakon svake promjene, morate se ili odjaviti i prijaviti, ili pokrenuti ovu naredbu:

naziv izvorne datoteke

Dodavanje varijabli korisničkog i sistemskog okruženja u Linuxu

Sada kada znate malo teorije, idemo na praksu. Lokalne varijable okruženja u Linuxu mogu se kreirati pomoću sljedećih naredbi:

var=vrijednost
$ izvoz var=vrijednost

Ove varijable će biti dostupne samo za trenutnu terminalsku sesiju.

Za uklanjanje varijabli okruženja može se koristiti nekoliko naredbi:

1. Korištenje env

Podrazumevano, env se može koristiti za pregled svih postavljenih varijabli okruženja. Ali sa opcijom -i, omogućava vam da privremeno uklonite sve varijable ljuske i pokrenete naredbu bez varijabli.

env -i naredba

Var je bilo koja varijabla koju želite proslijediti ovoj naredbi.

Ova naredba će pokrenuti ljusku bez varijabli okruženja uopće:

Nakon pokretanja takvog okruženja, varijable neće biti dostupne, ali nakon izlaska sve će se vratiti na svoja mjesta.

2. Korištenje unset

Ovo je još jedan način uklanjanja varijabli Linux okruženja. Unset uklanja varijablu po imenu do kraja trenutne sesije:

poništiti ime_varijable

3. Postavite vrijednost varijable na ""

Ovo je najlakši način za brisanje varijabli okruženja u Linuxu, postavljanjem varijable da isprazni, brišete je do kraja trenutne sesije.

Napomena: Koristeći ove metode, možete promijeniti vrijednosti sistemskih ili korisničkih varijabli, ali one će biti relevantne samo za trenutnu sesiju.

Kreiranje varijabli korisničkog i sistemskog okruženja

U ovom odjeljku ćemo pogledati kako postaviti i ukloniti sistemske i korisničke varijable ne samo za trenutnu sesiju, već i tako da se efekat nastavi nakon ponovnog pokretanja.

1. Postavite i uklonite lokalne varijable u Linuxu

Kreirajmo lokalnu varijablu VAR i postavimo je na bilo koju vrijednost, a zatim je uklonimo sa unset i provjerimo je li uklonjena:

VAR1="Gubitak"
$ echo $VAR1
$ poništi VAR1
$ echo $VAR1

Drugi način za kreiranje varijable je naredba za izvoz. Uklonite ga dodjeljivanjem prazne vrijednosti:

izvoz VAR="Gubitak"
$ echo $VAR
$var=
$ echo $VAR

Sada kreirajmo varijablu VAR2 i damo joj vrijednost. A zatim privremeno uklonite sve lokalne varijable pokretanjem env -i. Pokrenut će shell bez ikakvih varijabli. Nakon kucanja exit, sve varijable će biti vraćene.

VAR2="Gubitak"
$ echo $VAR2
$ env -i bash
$ echo $VAR2

Postavljanje i uklanjanje korisničkih varijabli

Uredite .bashrc datoteku u svom matičnom direktoriju dodavanjem naredbe za izvoz za izvoz željene varijable. Zatim pokrenite naredbu izvora da biste primijenili promjene. Kreirajmo, na primjer, varijablu CD-a:

Dodajte ovaj red (o, zatim zalijepite, zatim Esc i :wq):

export CD="Ovo je izgubljen dom"

Sada ostaje ažurirati konfiguraciju:

izvor .bashrc
$ echo $CD

Da biste uklonili ovu varijablu, jednostavno je uklonite iz .bashrc.

Sada dodajmo varijablu okruženja sa .bash_profile. Ova varijabla, kao što već znate, bit će dostupna samo kada se daljinski prijavite:

vi .bash_profile

Dodajte redak:

export VAR2="Ovo je izgubljena kuća"

I pokrenite ove naredbe da biste primijenili promjene i testirali dodavanje varijable:

izvor .bash_profile
$ echo $VAR2

Varijabla nije dostupna jer ste kreirali lokalnu terminalsku sesiju, sada se povežite preko ssh-a:

ssh [email protected]
$ echo $VAR2

Ovu varijablu okruženja možete izbrisati na isti način kao u prethodnom slučaju tako što ćete je izbrisati iz datoteke.

komentar: Ove varijable su uvijek dostupne, ali ne za sve korisnike.

Postavljanje i uklanjanje varijabli sistemskog okruženja

Kreirajmo varijablu dostupnu svim korisnicima u svim terminalskim sesijama osim udaljenih tako što ćemo je dodati u /etc/bash.profile:

vi /etc/bash.profile

export VAR="Ovo je varijabla za cijeli sistem"

Zatim ažuriramo:

izvor /etc/bash.bashrc

Sada je ova varijabla dostupna svim korisnicima, na svim terminalima:

echo $VAR
$ sudo su
$ echo $VAR
$su-
$ echo $VAR

Ako želite da varijablu okruženja učinite dostupnom svim korisnicima koji se daljinski povezuju na ovu mašinu, uredite datoteku /etc/profile:

export VAR1="Ovo je varijabla za cijeli sistem samo za udaljene sesije"

Ažurirajte konfiguraciju i provjerite dostupnost varijable, bit će dostupna samo na daljinu:

izvor /etc/profile
$ echo $VAR1

Ako trebate dodati varijablu okruženja na Linux tako da bude dostupna i udaljenim i lokalnim sesijama, izvezite je u /etc/environment:

vi /etc/environment

izvoz VAR12="Dostupan sam svuda"

Provjeravamo:

izvor /etc/environment
$ echo $VAR12
$ sudo su
$ echo $VAR12
$exit
$ ssh lokalni host
$ echo $VAR12

mob_info