Sådan indstilles og frakobles lokale, bruger- og systemomfattende miljøvariabler i Linux


Miljøvariabler er nogle specielle variabler, der er defineret i shell og er nødvendige af programmer under udførelse. De kan være systemdefineret eller brugerdefineret. Systemdefinerede variabler er dem, der er indstillet af systemet og bruges af programmer på systemniveau.

For f.eks. PWD-kommando er en meget almindelig systemvariabel, der bruges til at gemme den nuværende arbejdsmappe. Brugerdefinerede variabler indstilles typisk af brugeren, enten midlertidigt for den aktuelle shell eller permanent. Hele konceptet med indstilling og un-setting miljøvariabler drejer sig om nogle sæt filer og få kommandoer og forskellige skaller.

I bredere termer kan en miljøvariabel være i tre typer:

En defineret til den aktuelle session. Disse miljøvariabler varer kun indtil den aktuelle session, det være sig fjernloginsession eller lokal terminalsession. Disse variabler er ikke specificeret i nogen konfigurationsfiler og oprettes og fjernes ved hjælp af et specielt sæt kommandoer.

Dette er de variabler, der er defineret for en bestemt bruger og indlæses hver gang en bruger logger på ved hjælp af en lokal terminalsession, eller at den bruger er logget ind ved hjælp af fjernloginsession. Disse variabler indstilles typisk og indlæses fra følgende konfigurationsfiler: .bashrc , .bash_profile , .bash_login , .profile filer, der findes i brugerens hjemmekatalog.

Dette er de miljøvariabler, der er tilgængelige i hele systemet, dvs. for alle brugere, der er til stede på det system. Disse variabler findes i systemomspændende konfigurationsfiler, der findes i følgende kataloger og filer: /etc/environment , /etc/profile , /etc/profile.d/, /etc/bash.bashrc . Disse variabler indlæses hver gang systemet tændes og logges på enten lokalt eller eksternt af enhver bruger.

Forståelse af brugerbrede og systemkonfigurationsfiler

Her beskriver vi kort forskellige konfigurationsfiler, der er anført ovenfor, der indeholder miljøvariabler, enten systembrede eller brugerspecifikke.

Denne fil er brugerspecifik fil, der indlæses hver gang bruger opretter en ny lokal session, dvs. med enkle ord åbner en ny terminal. Alle miljøvariabler oprettet i denne fil vil træde i kraft hver gang en ny lokal session startes.

Denne fil er brugerspecifik fjernfil til login. Miljøvariabler, der er anført i denne fil, påkaldes hver gang brugeren er eksternt logget ind, dvs. ved hjælp af ssh-session. Hvis denne fil ikke er til stede, søger systemet efter .bash_login eller .profile filer.

Denne fil er en systemvid fil til oprettelse, redigering eller fjernelse af miljøvariabler. Miljøvariabler oprettet i denne fil er tilgængelige overalt i systemet, af hver bruger, både lokalt og eksternt.

Systembred bashrc -fil. Denne fil indlæses en gang for hver bruger, hver gang brugeren åbner en lokal terminalsession. Miljøvariabler oprettet i denne fil er tilgængelige for alle brugere, men kun gennem lokal terminalsession. Når en bruger på denne maskine får adgang til eksternt via en ekstern login-session, vil disse variabler ikke være synlige.

System bred profilfil. Alle variabler, der er oprettet i denne fil, er tilgængelige for alle brugere på systemet, men kun hvis brugerens session påberåbes eksternt, dvs. via fjernlogin. Enhver variabel i denne fil er ikke tilgængelig for lokal login-session, dvs. når brugeren åbner en ny terminal på sit lokale system.

Bemærk: Miljøvariabler oprettet ved hjælp af system- eller brugerkonfigurationsfiler kan fjernes ved kun at fjerne dem fra disse filer. Bare at efter hver ændring i disse filer skal du enten logge ud og logge ind igen eller bare skrive følgende kommando på terminalen for at ændringer skal træde i kraft:

$ source <file-name>

Indstil eller frakobl lokale variabler eller sessionsomfattende miljøvariabler i Linux

Lokale miljøvariabler kan oprettes ved hjælp af følgende kommandoer:

$ var=value 
OR
$ export var=value

Disse variabler er sessionbrede og gælder kun for den aktuelle terminalsession. For at rydde disse sessionsomfattende miljøvariabler kan følgende kommandoer bruges:

Som standard viser kommandoen "env" alle de aktuelle miljøvariabler. Men hvis det bruges med -i switch, rydder det midlertidigt alle miljøvariabler og lader brugeren udføre en kommando i den aktuelle session i fravær af alle miljøvariablerne.

$ env –i [Var=Value]… command args…

Her svarer var = værdi til enhver lokal miljøvariabel, som du kun vil bruge med denne kommando.

$ env –i bash

Vil give bash shell, som midlertidigt ikke ville have nogen af miljøvariablerne. Men når du går ud af skallen, vil alle variablerne blive gendannet.

En anden måde at rydde lokale miljøvariabler på er ved at bruge kommandoen unset. For at ophæve en lokal miljøvariabel midlertidigt

$ unset <var-name>

Hvor, var-name er navnet på den lokale variabel, som du vil frakoble eller rydde.

En anden mindre almindelig måde ville være at indstille navnet på den variabel, som du vil rydde, til (Tom). Dette vil rydde værdien af den lokale variabel for den aktuelle session, som den er aktiv for.

BEMÆRK - DU KAN EVENTUELLE SPILLE MED OG ÆNDRE VÆRDIERNE FOR SYSTEM- ELLER BRUGERMILJØVARIABELLE, MEN ÆNDRINGER VIL VEJRE reflektere i LØBENDE TERMINALSESSION KUN OG VIL IKKE VÆRE PERMANENT.

Lær hvordan du opretter, brugerbrede og systembrede miljøvariabler i Linux

I sektionen vil vi lære at indstille eller frakoble lokale, bruger- og systemomfattende miljøvariabler i Linux med nedenstående eksempler:

a.) Her opretter vi en lokal variabel VAR1 og indstiller den til en hvilken som helst værdi. Derefter bruger vi unset til at fjerne den lokale variabel, og i slutningen fjernes den variabel.

$ VAR1='TecMint is best Site for Linux Articles'
$ echo $VAR1
$ unset VAR1
$ echo $VAR1

b.) En anden måde at oprette en lokal variabel på er ved hjælp af kommandoen eksport . Den oprettede lokale variabel vil være tilgængelig for den aktuelle session. For at frakoble variablen skal du blot indstille værdien af variablen til .

$ export VAR='TecMint is best Site for Linux Articles'
$ echo $VAR
$ VAR=
$ echo $VAR

c.) Her oprettede vi en lokal variabel VAR2 og satte den til en værdi. For at køre en kommando, der midlertidigt rydder alle lokale og andre miljøvariabler, udførte vi kommandoen env –i . Denne kommando udførte her bash shell ved at rydde alle andre miljøvariabler ud. Efter at have indtastet exit på den påkaldte bash-shell, gendannes alle variabler.

$ VAR2='TecMint is best Site for Linux Articles'
$ echo $VAR2
$ env -i bash
$ echo $VAR2   

a.) Rediger .bashrc -filen i dit hjemmekatalog for at eksportere eller indstille den miljøvariabel, du skal tilføje. Efter denne kilde til filen for at få ændringerne til at træde i kraft. Så ville du se variablen ( CD i mit tilfælde) træde i kraft. Denne variabel vil være tilgængelig hver gang du åbner en ny terminal for denne bruger, men ikke til fjernsloginsessioner.

$ vi .bashrc

Tilføj følgende linje til .bashrc -filen i bunden.

export CD='This is TecMint Home'

Kør nu følgende kommando for at tage nye ændringer og teste den.

$ source .bashrc 
$ echo $CD

For at fjerne denne variabel skal du bare fjerne følgende linje i .bashrc-filen og genkilde den:

b.) Hvis du vil tilføje en variabel, der vil være tilgængelig til fjernsloginsessioner (dvs. når du ssh til brugeren fra fjernsystemet), skal du ændre filen .bash_profile .

$ vi .bash_profile

Tilføj følgende linje til .bash_profile -filen i bunden.

export VAR2='This is TecMint Home'

Når du køber denne fil, vil variablen være tilgængelig, når du ssh til denne bruger, men ikke når du åbner en ny lokal terminal.

$ source .bash_profile 
$ echo $VAR2

Her er VAR2 ikke oprindeligt tilgængelig, men ved at gøre ssh til bruger på localhost bliver variablen tilgængelig.

$ ssh [email 
$ echo $VAR2

For at fjerne denne variabel skal du bare fjerne linjen i filen .bash_profile , som du tilføjede, og kilde filen igen.

BEMÆRK: Disse variabler vil være tilgængelige hver gang du er logget ind på den aktuelle bruger, men ikke til andre brugere.

a.) For at tilføje systemdækkende variabel uden login (dvs. en, der er tilgængelig for alle brugere, når nogen af dem åbner en ny terminal, men ikke når nogen bruger af en maskine får fjernadgang), tilføj variablen til /etc/bash. bashrc -fil.

export VAR='This is system-wide variable'

Derefter kilder du filen.

$ source /etc/bash.bashrc 

Nu vil denne variabel være tilgængelig for hver bruger, når han åbner en ny terminal.

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

Her er den samme variabel tilgængelig for rodbruger såvel som normal bruger. Du kan bekræfte dette ved at logge ind på en anden bruger.

b.) Hvis du vil have en miljøvariabel, der skal være tilgængelig, når nogen af brugerne på din maskine er eksternt logget på, men ikke ved at åbne en ny terminal på den lokale maskine, skal du redigere filen - /etc/profil .

export VAR1='This is system-wide variable for only remote sessions'

Efter tilføjelse af variablen skal du bare kilde filen igen. Derefter ville variablen være tilgængelig.

$ source /etc/profile
$ echo $VAR1

For at fjerne denne variabel skal du fjerne linjen fra /etc/profile -filen og kilden til den igen.

c.) Hvis du vil tilføje et hvilket som helst miljø, som du vil have, skal være tilgængeligt i hele systemet, på både fjernloginsessioner såvel som lokale sessioner (dvs. åbning af et nyt terminalvindue) for alle brugere, skal du blot eksportere variablen i/etc/miljøfil.

export VAR12='I am available everywhere'

Efter at bare kilde filen og ændringerne vil træde i kraft.

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

Her, som vi ser, er miljøvariablen tilgængelig for normal bruger, rodbruger såvel som for fjernloginsession (her til localhost).

For at rydde denne variabel skal du bare fjerne posten i/etc/miljø-filen og genkilde den eller logge ind igen.

BEMÆRK: Ændringer træder i kraft, når du kilder til filen. Men hvis ikke, skal du muligvis logge ud og logge ind igen.

Konklusion

Dette er således få måder, vi kan ændre miljøvariablerne på. Hvis du finder nye og interessante tricks til det samme skal du nævne i dine kommentarer.