M. Garrels. bash manual

2.2. Varijable okruženja

Operativni sistem održava posebnu vrstu resursa tzv Varijable okruženja (varijable okruženja). Ove varijable su par IME - VRIJEDNOST . Ime može početi slovom i sastojati se od slova, brojeva i donjih crta.

Za zamjenu vrijednosti varijable u komandnoj liniji, imenu varijable prethodi znak $:

$ echo $USER gost

Ako varijabla nije postavljena, vraća se prazan niz.

Naredba o dodjeli koristi se za postavljanje vrijednosti varijable (u slučaju ljuski sličnih Bourneu):

$ TEST=test

ili ugrađeni set izraz (u slučaju C-like):

$ set TEST=test

Naredba set bez argumenata navodi vrijednosti svih varijabli postavljenih u okruženju:

$ set COLUMNS=197 CVS_RSH=ssh DIRSTACK=() EUID=1000 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/home/guest/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/home/mygost HOME=/home/mygost =$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/ lespipe.sh %s" LINES=65 LOGNAME=gost ....

Varijable mogu biti lokalne za dati proces ili globalne za sesiju. Možete postaviti lokalne vrijednosti za varijable tako što ćete im prethoditi naredbama:

$ TEST=test1 sh -c "echo $TEST" test1

Možete procijeniti sadržaj skupa varijabli za sesiju pozivanjem ugrađene komande env interpretera, u slučaju Bourneovih tumača (sh, ksh, bash, zsh, pdksh...) i printenv u slučaju korištenja C-Shell kloniranih interpretatora (csh, tcsh..):

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC=/ust-3lib3//ust-3. =/dev/pts/6 USER=guest MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin :/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec /openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/guest LOGNAME=gost QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 172.16.0.9 50487 172.16.0.9 50487 172.16.0.9 /bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

Skupovi naredbi Shell mogu biti povezani u batch fajlove koji se nazivaju skripte, pri čemu prvi red u posebnoj vrsti komentara označava tumač komandi za izvršavanje ovog skupa. Na primjer, napravimo datoteku u uređivaču teksta pod nazivom test, sa sljedećim sadržajem:

#!/bin/sh echo TEST varijabla: echo $TEST

Ovaj program će ispisati standardni izlaz tekstualnu poruku "Varijabla TEST: " i vrijednost varijable TEST, ako je postavljena. Pokreni ga iz komandna linija Možete ga proslijediti kao parametar ljusci:

$ sh test Varijabla TEST:

Možete napraviti globalnu varijablu koristeći naredbu export (Bourne) ili setenv (C-SHell):

$ export TEST=test1 $ sh test Varijabla TEST: test1

Možete postaviti lokalne vrijednosti varijabli za izvršavanje ovog programa tako što ćete im prethoditi naredbama:

$ TEST=test2 sh test Varijabla TEST: test2

Varijable okruženja se uklanjaju pomoću naredbe unset.

Varijable okruženja su posebne varijable koje su definirane u ljusci i potrebne su programima ili skriptama u vrijeme izvođenja. Može ih definirati sistem ili korisnik. Sistemski definirane varijable su one koje postavlja sistem.

Na primjer komanda OSI je vrlo uobičajena sistemska varijabla koja se koristi za pohranjivanje trenutnog radnog direktorija. Korisničke varijable se obično postavljaju ili privremeno za trenutnu ljusku ili trajno. Cijeli koncept konfiguriranja i promjene postavki okruženja vrti se oko skupa datoteka i nekoliko naredbi i različitih školjki.

Preciznije, varijabla okruženja može biti tri tipa:

1. Varijabla lokalnog okruženja

Definiran je za tekuću sesiju. Ove varijable okruženja koriste se za vrijeme trajanja trenutne sesije, bilo da se radi o sesiji udaljene prijave ili sesiji lokalnog terminala. Ove varijable nisu navedene ni u jednom konfiguracijskom fajlu i kreiraju se i uklanjaju pomoću posebnog skupa naredbi.

2. Varijabla korisničkog okruženja

Ovo su varijable specifične za korisnika koje se učitavaju svaki put kada se korisnik prijavljuje koristeći sesiju lokalnog terminala ili ako se taj korisnik prijavljuje pomoću sesije udaljene prijave. Ove varijable se obično postavljaju i učitavaju iz sljedećih konfiguracijskih datoteka: .bashrc,.bash_profile,.bash_login,.profil, koji su prisutni u korisničkom početnom direktoriju.

3. Varijable sistemskog okruženja

To su varijable okruženja koje su dostupne u cijelom sistemu, odnosno za sve korisnike koji su prisutni na tom sistemu. Ove varijable su prisutne u konfiguracijskim datotekama za cijeli sistem koji se nalaze u sljedećim direktorijima i datotekama: /etc/environment,/etc/profile, /etc/profile.d/, /etc/bash.bashrc. Ove varijable se učitavaju svaki put kada se sistem uključi i korisnici se prijave, bilo lokalno ili daljinski.

Razumijevanje zajedničkih i sistemskih konfiguracijskih datoteka

Ovdje ćemo ukratko opisati različite gore navedene konfiguracijske datoteke koje sadrže varijable okruženja, sistemske i korisničke.

.bashrc

Ovaj fajl je korisnički fajl koji se učitava svaki put kada korisnik kreira novu lokalnu sesiju, tj. jednostavnim riječima, otvara novi terminal. Sve varijable okruženja kreirane u ovoj datoteci stupaju na snagu svaki put kada se pokrene nova lokalna sesija.

.bash_profile

Varijable okruženja navedene u ovoj datoteci pozivaju se svaki put kada se korisnik prijavljuje na daljinu, tj. pomoću naredbe ssh. Ako ova datoteka ne postoji, sistem traži datoteke .bash_login ili .profil.

/etc/environment

Ova datoteka je sistemska datoteka za kreiranje, uređivanje ili brisanje bilo koje varijable okruženja. Varijable okruženja kreirane u ovoj datoteci dostupne su u cijelom sistemu, svakom korisniku globalno, kako lokalno tako i udaljeno.

/etc/bash.bashrc

Sistemski fajl bashrc. Ova datoteka se preuzima jednom po korisniku, svaki put kada korisnik otvori sesiju lokalnog terminala. Varijable okruženja kreirane u ovoj datoteci dostupne su svim korisnicima, ali samo kroz sesiju lokalnog terminala. Kada se bilo koji korisnik na ovom računaru izbriše putem sesije udaljene prijave, ove varijable neće biti vidljive.

/etc/profile

Sve varijable kreirane u ovoj datoteci dostupne su svakom korisniku na sistemu, ali samo ako se ta korisnička sesija poziva na daljinu, odnosno putem udaljene prijave. Bilo koja varijabla u ovoj datoteci neće biti dostupna lokalnoj sesiji prijave, tj. kada korisnik otvori novi terminal na svom lokalnom sistemu.

Bilješka. Varijable okruženja kreirane pomoću konfiguracijskih datoteka na nivou sistema ili korisnički definiranih datoteka mogu se izbrisati, ali to možete učiniti samo iz tih datoteka. Odmah nakon svake promjene ovih datoteka, ili se odjavite ili se ponovo prijavite ili jednostavno upišite sljedeću naredbu na terminalu kako bi promjene stupile na snagu:

$ izvor

Postavljanje ili uklanjanje lokalnih varijabli ili varijabli okruženja sesije u Linuxu

Lokalne varijable okruženja mogu se kreirati pomoću sljedećih naredbi:

$ var=vrijednost ILI $ izvoz var=vrijednost

Ove varijable su varijable sesije i važe samo za trenutnu terminalsku sesiju. Da obrišete ove varijable okruženja, možete koristiti sljedeće naredbe:

1. Upotreba env

Zadana komanda je " env» navodi sve trenutne varijable okruženja. Ali, ako se koristi s ključem " -i“, tada privremeno briše sve varijable okruženja i dozvoljava korisniku da pokrene naredbu u trenutnoj sesiji u odsustvu svih varijabli okruženja.

$ env -i ... naredba args ...

Ovdje var = vrijednost odgovara bilo kojoj lokalnoj varijabli okruženja koju želite koristiti samo s ovom naredbom.

$ env -i bash

Pokrećemo bash shell, u kojem će sve varijable okruženja biti privremeno obrisane. Ali kada izađete iz ljuske, sve varijable će biti vraćene.

2. Korištenje Cancel

Drugi način za brisanje varijable lokalnog okruženja je korištenje naredbe unset. Da biste privremeno onemogućili bilo koju varijablu lokalnog okruženja,

$unset

gdje, var-name je ime lokalne varijable koju želite obrisati ili izbrisati.

3. Postavite ime varijable sa prazna vrijednost

Drugi manje popularan način je postavljanje imena varijable koju želite da obrišete na praznu vrijednost, tj. VAR=(nema ništa nakon jednakosti - pritisnite enter). Ovo će obrisati vrijednost lokalne varijable za trenutnu sesiju za koju je aktivna.

BILJEŠKA. MOŽETE PROMJENITI SISTEMSKE VARIJABLE, ALI PROMJENE ĆE SE ODRAŽATI SAMO U TRENUTNOJ SESNIJI I NEĆE BITI TRAJNE.

Naučite kako kreirati, korisničke i sistemske varijable okruženja u Linuxu

U ovom odjeljku ćemo pogledati kako postaviti ili onemogućiti lokalne, korisničke i sistemske varijable okruženja u Linuxu sa primjerima u nastavku:

1. Postavljanje i uklanjanje lokalnih varijabli u Linuxu.

a) Ovdje kreiramo lokalnu varijablu VAR1 i postavite ga na bilo koju vrijednost. Zatim koristimo unset i na kraju brišemo ovu varijablu.

$ VAR1="TecMint je najbolja stranica za Linux članke" $ echo $VAR1 $ unset VAR1 $ echo $VAR1

b) Drugi način za kreiranje lokalne varijable je korištenje naredbe izvoz. Kreirana lokalna varijabla će biti dostupna za trenutnu sesiju. Da biste onemogućili varijablu, jednostavno postavite varijablu na praznu vrijednost.

$ export VAR="TecMint je najbolja stranica za Linux članke" $ echo $VAR $ VAR= $ echo $VAR

c) Ovdje smo kreirali lokalnu varijablu VAR2 i postavite njegovu vrijednost. Zatim, da bismo pokrenuli naredbu, privremeno brišući sve lokalne i druge varijable okruženja, pokrenuli smo naredbu " env -i". Ova komanda ovdje je pokrenula ljusku bash, brisanje svih ostalih varijabli okruženja. Nakon unosa " Izlaz» u pozvanoj ljusci bash sve varijable će biti vraćene.

$ VAR2="TecMint je najbolja stranica za Linux članke" $ echo $VAR2 $ env -i bash $ echo $VAR2

2. Postavljanje i uklanjanje varijabli korisničkog okruženja u Linuxu.

a) Promijenite datoteku .bashrc u vašem početnom direktoriju da izvezete ili postavite varijablu okruženja koju želite dodati. Nakon toga pokrenite datoteku kako bi promjene stupile na snagu. Tada ćete vidjeti varijablu ("CD" u mom slučaju) koja je stupila na snagu. Ova varijabla će biti dostupna svaki put kada otvorite novi terminal za ovog korisnika, ali ne i za sesije udaljene prijave.

$ vi .bashrc

.bashrc.

Izvezi CD="Ovo je TecMint Home"

Sada pokrenite sljedeću naredbu kako bi nove promjene stupile na snagu i testirajte varijablu.

$ source .bashrc $ echo $CD

Da biste uklonili ovu varijablu, jednostavno obrišite red u datoteci. bashrc i ponovo uđite u školjku.

b) Da biste dodali varijablu koja će biti dostupna za sesije udaljene prijave, izmijenite datoteku .bash_profile.

$ vi .bash_profile

Dodajte sljedeći red u datoteku .bash_profile.

Izvezi VAR2="Ovo je TecMint Home"

Varijabla će biti dostupna kada se izvrši daljinsko korištenje ssh prijavite se za tog korisnika, ali ne dok otvarate novi lokalni terminal.

$ source .bash_profile $ echo $ var2

Evo VAR2 u početku nije dostupno, ali kada se daljinski prijavite koristeći ssh korisnik uključen lokalni domaćin, varijabla postaje dostupna.

$ ssh $ echo $ var2

Da biste uklonili ovu varijablu, jednostavno uklonite red u datoteci .bash_profile koju ste dodali i ponovo pročitajte datoteku.

BILJEŠKA. Ove varijable će biti dostupne pri svakoj prijavi za trenutnog korisnika, ali ne i za druge korisnike.

3. Postavljanje i uklanjanje varijabli sistemskog okruženja u Linuxu.

a) Da biste dodali sistemsku varijablu bez prijave (tj. onu koja je dostupna svim korisnicima kada bilo koji od njih otvori novi terminal, ali ne kada postoji daljinski pristup bilo koji korisnik na mašini) dodajte ovu varijablu u datoteku /etc/bash.bashrc.

Izvezi VAR="Ovo je varijabla za cijeli sistem"

Zatim ponovo pročitajte datoteku.

$source /etc/bash.bashrc

Ova varijabla će sada biti dostupna svakom korisniku kada otvori novi terminal.

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

Ovdje je varijabla dostupna i za root korisnika i za normalnog korisnika. Ovo možete provjeriti tako što ćete se prijaviti kao drugi korisnik.

b) Ako želite da neka varijabla okruženja bude dostupna kada se bilo koji od korisnika na vašem računaru prijavi daljinski, ali nije otvorio nijedan novi terminal na lokalni računar, trebate urediti datoteku − /etc/profile .

Izvezi VAR1="Ovo je sistemska varijabla samo za udaljene sesije"

Nakon dodavanja varijable, samo ponovo pročitajte datoteku. Tada će varijabla biti dostupna.

$source/etc/profile $echo $var1

Da biste uklonili ovu varijablu, uklonite red iz datoteke /etc/profile i ponovo ga pročitati.

c) Međutim, ako želite da dodate varijablu u bilo koje okruženje u kojem želite da bude dostupna širom sistema, i za sesije udaljene prijave i lokalne sesije za sve korisnike, samo izvezite varijablu u /etc/environment.

Izvezi VAR12="Dostupan sam svuda"

Nakon toga, samo ponovo pročitajte datoteku i promjene će stupiti na snagu.

$ source /etc/environment $ echo $VAR12 $ sudo su $ echo $VAR12 $ exit $ ssh localhost $ echo $VAR12

Ovdje možemo vidjeti da je varijabla okruženja dostupna za normalnog korisnika, root korisnika, kao i za sesiju udaljene prijave.

Da obrišete ovu varijablu, jednostavno obrišite unos u datoteci /etc/environment i ponovo pročitajte fajl.

BILJEŠKA. Promjene stupaju na snagu kada se datoteka ponovo pročita /etc/environment. Ali, ako ne, možda ćete se morati odjaviti i ponovo prijaviti.

Postavite pitanja o članku u komentarima ispod.

Hvala što ste odvojili vrijeme da pročitate članak!

Ako imate bilo kakvih pitanja, postavite ih u komentarima.

Pretplatite se na ažuriranja našeg bloga i budite u toku sa novostima iz svijeta infokomunikacija!

Da biste saznali više i istakli se znanjem među gomilom IT ljudi, prijavite se na Cisco kurseve Cisco akademije, Linux kurseve od Linux Professional Institute

  • Pitat ćemo vas o pogodnom vremenu za vježbanje i prilagođavanje: razumijemo da nema dovoljno vremena za učenje.
  • Ako želite individualni raspored, mi ćemo ga raspraviti i implementirati.
  • Postavićemo jasne rokove za samoorganizaciju. Lični kustos će Vam biti u kontaktu da odgovori na pitanja, da Vas savjetuje i motiviše da se pridržavate rokova za polaganje ispita.
  • Takođe ćemo vam pomoći:

    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 Linux okruženja definiše sistem i koriste 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 se radi o daljinskom pristupu ili emulatoru 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

    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

    Dok radi sa serverom, ljuska kompajlira mnogo informacija koje određuju njegovo ponašanje i pristup resursima. Neke od ovih opcija nalaze se u postavkama ljuske, druge se određuju korisničkim unosom.

    Jedan od načina na koji ljuska prati ove informacije je korištenje okruženja. Okruženje je područje koje sadrži varijable koje definiraju sistem koje ljuska gradi svaki put kada se sesija pokrene.

    Ovaj vodič objašnjava kako komunicirati sa okruženjem i čitati ili postavljati varijable okruženja i ljuske interaktivno i kroz konfiguracijske datoteke. Svi koraci se izvode na Ubuntu 12.04 VPS, ali bilo kom modernom Linux distribucija trebalo bi raditi na isti način.

    Kako funkcionira okruženje i njegove varijable

    Svaki put kada se sesija ljuske aktivira, pokreće se proces prikupljanja i kompajliranja informacija koje bi trebale biti dostupne ljusci i njenim podređenim procesima. Shell dobija ove podatke iz mnogo različitih datoteka i postavki na sistemu.

    Općenito, okolina pruža medij za prijenos koji prikuplja i specificira neophodna podešavanja shell proces, koji ih zauzvrat prosljeđuje svojim podređenim procesima.

    Okruženje je u obliku niza koji sadrži parove ključ/vrijednost. Više vrijednosti se obično odvajaju dvotočkom (:). Svaki par, općenito, izgleda otprilike ovako:

    KEY=vrijednost1:vrijednost2:...

    Ako vrijednost sadrži razmake, moraju se koristiti dvostruki navodniki:

    KEY="vrijednost s razmacima"

    U ovom slučaju, ključ označava varijable jedne od ta dva postojeće vrste: varijable okruženja ili ljuske.

    Varijable okruženja su varijable koje su definirane za trenutnu ljusku i naslijeđuju ih sve podređene ljuske ili procesi. Varijable okruženja se koriste za prosljeđivanje informacija procesima pokrenutim iz ljuske.

    Shell varijable su varijable koje se nalaze isključivo u ljusci u kojoj su postavljene ili definirane. Često se koriste za praćenje trenutnih podataka (kao što je trenutni radni direktorij).

    Obično se takve varijable označavaju velikim slovima. Ovo pomaže korisnicima da razlikuju varijable okruženja u drugim kontekstima.

    Izlaz varijabli ljuske i okruženja

    Svaka sesija prati svoje ljuske i varijable okruženja. Postoji nekoliko načina da ih izbacite.

    Da vidite listu svih varijabli okruženja, koristite naredbe env ili printenv. Po defaultu, oni će dati potpuno isti rezultat:

    printenv
    SHELL=/bin/bash
    TERM=xterm
    USER=demuser
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd= 40;33;01:or=40;31;01:su=37;41:sg=30;43:ca:...
    MAIL=/var/mail/demoser
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    PWD=/home/demoser
    LANG=en_US.UTF-8
    SHLVL=1
    HOME=/home/demoser
    LOGNAME=demiser
    LESSOPEN=| /usr/bin/lesspipe %s
    LESSCLOSE=/usr/bin/lesspipe %s %s
    _=/usr/bin/printenv

    Ovo je tipičan primjer izlaza iz printenv i env naredbi. Ove naredbe se razlikuju samo u nekoliko pojedinačnih funkcija. Na primjer, printenv može tražiti vrijednosti pojedinačnih varijabli:

    printenv SHELL
    /bin/bash

    Naredba env vam omogućava da promijenite okruženje u kojem se pokreću programi tako što ćete naredbi proslijediti skup definicija varijabli, otprilike ovako:

    env VAR1="blahbla" command_to_run command_options

    Kao što je gore spomenuto, podređeni procesi obično nasljeđuju varijable okruženja roditeljskog procesa, što omogućava promjenu vrijednosti ili uvođenje dodatnih varijabli za podređene procese.

    Kao što možete vidjeti u izlazu naredbe printenv, mnoge varijable okruženja kreiraju sistemske datoteke i procesi bez intervencije korisnika.

    Ali kako vidite varijable ljuske?

    Za to se koristi naredba set. Kada se unese bez dodatnih opcija, set navodi sve varijable ljuske, varijable okruženja, lokalne varijable i funkcije ljuske:

    set
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fingore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    . . .

    Po pravilu, ova lista je prilično duga. Da biste ga prikazali u pogodnijem formatu, otvorite ga programom za pejdžer:

    Ova lista sadrži ogromnu količinu dodatnih informacija koje trenutno nisu potrebne (na primjer, neke bash funkcije).

    Da biste "očistili" izlaz, morate pokrenuti naredbu set u POSIX modu, koji preskače funkcije ljuske. Ovo treba učiniti u podljusci kako se ne bi promijenilo trenutno okruženje:

    (set -o posix; set)

    Ova akcija će prikazati sve varijable okruženja i ljuske.

    Također možete uporediti ovaj rezultat s rezultatom naredbi env/printenv i pokušati navesti samo varijable ljuske, ali takva lista neće biti idealna, jer ove naredbe ispisuju informacije drugačije:

    com-23<(set -o posix; set | sort) <(env | sort)

    Najvjerovatnije će lista sadržavati nekoliko varijabli okruženja, jer naredba set ispisuje vrijednosti u navodnicima, ali naredbe printenv i env ne.

    Međutim, to je odličan način da vidite okruženje i varijable ljuske postavljene u datoj sesiji.

    Takve varijable se koriste u razne svrhe. Oni pružaju alternativni način za postavljanje trajnih vrijednosti sesije između procesa bez potrebe za mijenjanjem datoteke.

    Osnovno okruženje i varijable ljuske

    Neke posebno korisne varijable okruženja i ljuske se vrlo često koriste.

    Ispod je lista glavnih varijabli okruženja:

    • SHELL: opisuje ljusku koja interpretira unesene komande. U većini slučajeva bash je postavljen po defaultu, ali ova vrijednost se može promijeniti ako je potrebno.
    • TERM: Određuje vrstu terminala koji se emulira kada se shell pokrene. Različiti hardverski terminali mogu se emulirati ovisno o operativnim zahtjevima. Generalno, ne morate da brinete o ovome.
    • USER: trenutni korisnik.
    • OSI: trenutni radni direktorij.
    • OLDPWD: prethodni radni direktorij. Shell ga čuva u slučaju da pokrenete naredbu cd -.
    • LS_BOJE: Određuje kodove boja koji se koriste za kodiranje bojom izlaza naredbe ls. Takav izlaz pomaže korisniku da brže pročita rezultat naredbe (na primjer, da brzo razlikuje tipove datoteka).
    • MAIL: Put do trenutnog poštanskog sandučeta korisnika.
    • PUT: Lista direktorija kojima sistem pristupa prilikom izvršavanja naredbi. Kada korisnik pokrene naredbu, sistem provjerava ove direktorije navedenim redoslijedom za izvršnu datoteku.
    • LANG: Trenutne postavke jezika i lokalizacije, uključujući kodiranje znakova.
    • DOM: početni direktorij trenutnog korisnika.
    • _ : zadnja izvršena naredba.

    Nakon pregleda liste varijabli okruženja, ispitajte listu varijabli ljuske:

    • BASHOPTS: lista opcija koje se koriste prilikom izvršavanja bash-a. Ovo se može koristiti za provjeru da li okruženje radi ispravno.
    • BASH_VERZIJA: pokrenuta verzija bash-a u ljudskom čitljivom obliku.
    • BASH_VERSINFO: bash verzija u mašinski čitljivom formatu.
    • COLUMNS: definira širinu izlaza u stupcima.
    • DIRSTACK: hrpa direktorija dostupnih naredbama pushd i popd.
    • HISTFILESIZE: Maksimalan broj linija sadržanih u datoteci istorije komandi.
    • HISTSIZE: Broj komandi koje treba memorisati u listi istorije.
    • HOSTNAME: trenutno ime hosta.
    • IFS: Interni separator za polja za unos na komandnoj liniji. Zadana vrijednost je razmak.
    • PS1: definira primarni string prompt-a - izgled komandne linije pri pokretanju sesije ljuske. Varijabla PS2 postavlja sekundarni string prompta ako se naredba proteže u više redova.
    • SHELLOPTS: opcije ljuske koje se mogu postaviti sa set.
    • UID: Jedinstveni ID trenutnog korisnika.

    Postavljanje varijabli ljuske i okruženja

    Ispod je nekoliko primjera koji pokazuju razliku između ljuske i varijabli okruženja i objašnjavaju sintaksu za postavljanje ovih varijabli.

    Kreiranje varijabli ljuske

    Prvo morate postaviti varijable ljuske trenutne sesije. Ovo je vrlo jednostavno, sve što trebate učiniti je dati ime i vrijednost. Kao što je već spomenuto, velika slova se koriste za pisanje imena takvih varijabli.

    TEST_VAR="Zdravo svijete!"

    Ovaj primjer koristi navodnike jer vrijednost sadrži razmake. Štaviše, ovdje se moraju koristiti jednostruki navodniki, budući da je uzvičnik poseban znak u bash shell-u koji se odnosi na historiju naredbi osim ako nije zaklonjen ili zatvoren u jednostruke navodnike.

    Dakle, rezultirajuća varijabla ljuske je važeća u trenutnoj sesiji, ali se ne prosljeđuje njenim podređenim procesima.

    Da biste to potvrdili, koristite naredbu grep na rezultatu naredbe set:

    set | grep TEST_VAR
    TEST_VAR="Zdravo svijete!"

    Također možete provjeriti da data varijabla nije varijabla okruženja tako što ćete pokrenuti grep na rezultat naredbe printenv:

    printenv | grep TEST_VAR

    Ova akcija neće dati nikakav rezultat.

    Ovo se može koristiti za otvaranje vrijednosti bilo koje ljuske ili varijable okruženja.

    echo $TEST_VAR
    Zdravo svijete!

    Kao što vidite, da biste upućivali na vrijednost varijable, trebate koristiti simbol $.

    Opet, rezultirajuća varijabla ne bi trebala biti proslijeđena nijednom podređenom procesu. Da biste ovo testirali, unutar vaše trenutne ljuske proširite novu bash ljusku:

    bash
    echo $TEST_VAR

    Ako proširite podređenu ljusku i pokušate otvoriti sadržaj varijable, ništa se neće prikazati. To znači da sve radi kako treba.

    Da se vratite na svoju originalnu ljusku, otkucajte exit:

    Kreiranje varijabli okruženja

    Sada pokušajte da pretvorite varijablu ljuske u varijablu okruženja. Ovo se radi izvozom varijable. Komanda koja izvodi izvoz ima odgovarajuće ime.

    Ova naredba pretvara varijablu ljuske u varijablu okruženja. Da biste provjerili da li je sve urađeno ispravno, možete ponovo pregledati listu varijabli okruženja:

    printenv | grep TEST_VAR
    TEST_VAR=Zdravo svijete!

    Sada je ova varijabla prikazana na ovoj listi. Također možete ponovo proširiti dječju ljusku:

    bash
    echo $TEST_VAR
    Zdravo svijete!

    Odlično! Podređena ljuska je dobila varijablu nadređene ljuske. Pokušajte izvesti još jednu varijablu prije nego što napustite podređenu ljusku.

    export NEW_VAR="Testiranje izvoza"

    Provjerite je li varijabla izvezena:

    printenv | grep NEW_VAR
    NEW_VAR=Testiranje izvoza

    Sada se vratite na originalnu školjku:

    Provjerite da li se data varijabla može otvoriti:

    Rezultat se ne vraća

    To je zato što se varijable okruženja prosljeđuju samo podređenim procesima. Ne postoji ugrađen način za postavljanje varijabli okruženja roditeljske ljuske. U većini slučajeva, ovo sprečava programe da utiču na operativno okruženje iz kojeg su pokrenuti.

    Varijabla NEW_VAR je postavljena kao varijabla okruženja dječje ljuske. Ova varijabla je važeća za ovu ljusku i njene podređene ljuske i procese. Nakon što se korisnik vratio na originalnu ljusku, ovo okruženje je uništeno.

    Premještanje i resetiranje varijabli

    Varijabla TEST_VAR je i dalje varijabla okruženja. Da biste ga ponovo učinili promjenljivom ljuske, otkucajte:

    izvoz -n TEST_VAR

    Sada ova varijabla više nije varijabla okruženja:

    printenv | grep TEST_VAR

    Ovo je opet varijabla ljuske:

    set | grep TEST_VAR
    TEST_VAR="Zdravo svijete!"

    Za potpuno resetiranje varijable, bilo da se radi o varijabli okruženja ili ljuske, koristite naredbu unset:

    Provjerite da takva varijabla više ne postoji:

    Rezultat nije prikazan jer je varijabla resetirana.

    Automatsko podešavanje varijabli okruženja

    Kao što je već spomenuto, mnogi programi koriste varijable okruženja da bi odredili kako bi trebali raditi. Postavljanje potrebnih varijabli svaki put kada se kreira nova ljuska je prilično nezgodno. Osim toga, mnoge varijable se postavljaju odmah po unosu. Kako automatski postaviti varijable?

    Ovo je malo složenije nego što izgleda na prvi pogled jer bash shell čita mnogo konfiguracijskih datoteka.

    Tipovi sesija ljuske

    Bash shell čita različite konfiguracijske datoteke ovisno o tome kako je sesija započela. Prve dvije vrste sesija koje definiraju ljusku su početna sesija i podređena sesija.

    Početna ili početna ljuska(login shell) je shell sesija koja se otvara nakon autorizacije korisnika. Ako se korisnik prijavi na terminal ili se prijavi preko SSH-a, otvorit će se startna ljuska.

    Ako se nova sesija pokrene iz ovlaštene (početne) sesije (kao što je nova bash ljuska pokrenuta ranije u primjerima), ova sesija će biti podružnica (ne-Ulogovati se ljuska). Da biste otvorili ovu sesiju, ne morate proći proceduru autorizacije.

    Također, shell sesije su interaktivne i neinteraktivne.

    interaktivna sesija shells (interaktivna ljuska) je sesija spojena na terminal. Neinteraktivna ljuska sesija je sesija koja nije pripojena terminalu.

    Dakle, ljuske sesije su klasifikovane prema sljedećim aspektima: početak-dijete, interaktivno-neinteraktivno.

    Normalna sesija otvorena sa SSH-om je obično interaktivna početna sesija. Skripta koja se izvodi kroz komandnu liniju obično se izvodi u neinteraktivnoj podređenoj sesiji. Terminalna sesija je različite kombinacije ova dva svojstva.

    Klasifikujući sesiju kao početnu ili podređenu sesiju, sistem razume koje fajlove treba da pročita da bi inicijalizovao sesiju ljuske.

    Dakle, prvo, sesija pokretanja dobija konfiguracije iz /etc/profile. Zatim traži konfiguracijsku datoteku ljuske za pokretanje u korisničkom početnom direktoriju kako bi dohvatio korisnički definirane konfiguracije.

    Takva sesija čita datoteke ~/.bash_profile, ~/.bash_login i ~/.profile i ne čita druge datoteke.

    Podređena sesija zauzvrat čita /etc/baash.bashrc, a zatim i korisnikov ~/.bash.rc fajl za implementaciju okruženja.

    Neinteraktivne ljuske čitaju varijablu okruženja BASH_ENV i navedenu datoteku da kreiraju novo okruženje.

    Kako postaviti varijable okruženja

    Kao što vidite, konfiguracije su razbacane po različitim datotekama.

    Ovo čini sistem vrlo fleksibilnim, što je korisno u određenim situacijama kada trebate postaviti različite opcije za startnu i podređenu školjku. Međutim, ove školjke uglavnom koriste iste postavke.

    Srećom, većina Linux distribucija navodi konfiguracijsku datoteku podređene ljuske kao izvor konfiguracija ljuske za pokretanje. To znači da možete definirati varijable okruženja za obje sesije u konfiguracijskim datotekama podređene ljuske.

    Obično obje ljuske koriste varijable okruženja koje je specificirao korisnik. To znači da možete postaviti ove varijable u ~/.bashrc datoteci.

    Otvorite ovaj fajl:

    Najvjerovatnije već sadrži neke podatke. Većina ovdje navedenih vrijednosti su bash opcije i nemaju nikakve veze sa varijablama okruženja. Varijable u ovoj datoteci se postavljaju na isti način kao u komandnoj liniji:

    izvoz VARNAME=vrijednost

    Nakon unosa svih potrebnih varijabli, zatvorite datoteku. Sljedeći put kada se pokrene shell sesija, varijable postavljene ovdje će biti pročitane i proslijeđene okruženju ljuske. Da kažete trenutnoj sesiji da pročita datu datoteku, otkucajte:

    izvor ~/.bashrc

    Da postavite varijable za cijeli sistem, dodajte ih u /etc/profile, /etc/bash.bashrc ili /etc/environment.

    Rezultati

    Promenljive ljuske i okruženja su uvek prisutne u svim sesijama ljuske, tako da je poznavanje rada sa njima posebno korisno. Mogu se koristiti za prosljeđivanje konfiguracija roditeljskog procesa podređenim procesima, kao i za konfiguriranje postavki izvan datoteka.

    U određenim situacijama to pruža niz prednosti. Na primjer, neki mehanizmi implementacije se oslanjaju na varijable okruženja za postavljanje informacija o autentifikaciji. Ovo je zgodno, jer tako važni podaci neće biti pohranjeni ni u jednoj datoteci, što znači da će biti pouzdano zaštićeni od stranaca.

    Postoje mnoge druge uobičajene situacije u kojima će možda biti potrebno pročitati varijable ili promijeniti sistemsko okruženje. Alati i metode opisani u ovom vodiču odlična su osnova za razvijanje vještina u radu s varijablama i njihovom pravilnom korištenju.

    Tagovi: ,
    mob_info