Zoeken op website

Hoe lokale, gebruikers- en systeembrede omgevingsvariabelen in Linux in en uit te schakelen


Omgevingsvariabelen zijn enkele speciale variabelen die in de shell worden gedefinieerd en die programma's nodig hebben tijdens de uitvoering. Ze kunnen door het systeem of door de gebruiker worden gedefinieerd. Door het systeem gedefinieerde variabelen zijn variabelen die door het systeem worden ingesteld en worden gebruikt door programma's op systeemniveau.

Voor b.v. PWD-opdracht is een veel voorkomende systeemvariabele die wordt gebruikt om de huidige werkmap op te slaan. Door de gebruiker gedefinieerde variabelen worden doorgaans door de gebruiker ingesteld, hetzij tijdelijk voor de huidige shell, hetzij permanent. Het hele concept van het instellen en deactiveren van omgevingsvariabelen draait om een aantal bestanden, een paar opdrachten en verschillende shells.

In bredere termen kan een omgevingsvariabele in drie typen voorkomen:

1. Lokale omgevingsvariabele

Eén gedefinieerd voor de huidige sessie. Deze omgevingsvariabelen blijven slechts geldig tot de huidige sessie, of het nu gaat om een externe inlogsessie of een lokale terminalsessie. Deze variabelen zijn in geen enkel configuratiebestand gespecificeerd en worden gemaakt en verwijderd met behulp van een speciale reeks opdrachten.

2. Variabele in de gebruikersomgeving

Dit zijn de variabelen die voor een bepaalde gebruiker zijn gedefinieerd en worden geladen telkens wanneer een gebruiker inlogt met behulp van een lokale terminalsessie of wanneer die gebruiker wordt ingelogd met een externe inlogsessie. Deze variabelen worden doorgaans ingesteld in en geladen vanuit de volgende configuratiebestanden: .bashrc, .bash_profile, .bash_login, .profile-bestanden die aanwezig zijn in de thuismap van de gebruiker.

3. Systeembrede omgevingsvariabelen

Dit zijn de omgevingsvariabelen die systeembreed beschikbaar zijn, dat wil zeggen voor alle gebruikers die op dat systeem aanwezig zijn. Deze variabelen zijn aanwezig in systeembrede configuratiebestanden in de volgende mappen en bestanden: /etc/environment, /etc/profile, /etc/profile.d /, /etc/bash.bashrc. Deze variabelen worden elke keer geladen wanneer het systeem wordt ingeschakeld en door een gebruiker lokaal of op afstand wordt ingelogd.

Configuratiebestanden voor de hele gebruiker en het hele systeem begrijpen

Hier beschrijven we kort de verschillende hierboven genoemde configuratiebestanden die omgevingsvariabelen bevatten, systeembreed of gebruikersspecifiek.

.bashrc

Dit bestand is een gebruikersspecifiek bestand dat wordt geladen telkens wanneer de gebruiker een nieuwe lokale sessie aanmaakt, dat wil zeggen in eenvoudige woorden: een nieuwe terminal wordt geopend. Alle omgevingsvariabelen die in dit bestand zijn gemaakt, worden van kracht telkens wanneer een nieuwe lokale sessie wordt gestart.

.bash_profiel

Dit bestand is een gebruikersspecifiek extern aanmeldingsbestand. De omgevingsvariabelen die in dit bestand worden vermeld, worden elke keer aangeroepen wanneer de gebruiker op afstand wordt ingelogd, d.w.z. met behulp van een ssh-sessie. Als dit bestand niet aanwezig is, zoekt het systeem naar .bash_login of .profile bestanden.

/etc/omgeving

Dit bestand is een systeembreed bestand voor het maken, bewerken of verwijderen van omgevingsvariabelen. Omgevingsvariabelen die in dit bestand zijn gemaakt, zijn overal in het systeem toegankelijk, voor elke gebruiker, zowel lokaal als op afstand.

/etc/bash.bashrc

Systeembreed bashrc bestand. Dit bestand wordt voor elke gebruiker één keer geladen, elke keer dat die gebruiker een lokale terminalsessie opent. Omgevingsvariabelen die in dit bestand zijn gemaakt, zijn toegankelijk voor alle gebruikers, maar alleen via een lokale terminalsessie. Wanneer een gebruiker op die machine op afstand wordt benaderd via een externe inlogsessie, zijn deze variabelen niet zichtbaar.

/etc/profiel

Systeembreed profielbestand. Alle variabelen die in dit bestand zijn aangemaakt, zijn toegankelijk voor elke gebruiker op het systeem, maar alleen als de sessie van die gebruiker op afstand wordt aangeroepen, d.w.z. via extern inloggen. Elke variabele in dit bestand is niet toegankelijk voor een lokale inlogsessie, dat wil zeggen wanneer de gebruiker een nieuwe terminal op zijn lokale systeem opent.

Opmerking: omgevingsvariabelen die zijn gemaakt met systeembrede of gebruikersbrede configuratiebestanden kunnen worden verwijderd door ze te verwijderen alleen uit deze bestanden. Alleen dat u na elke wijziging in deze bestanden uitlogt en opnieuw inlogt, of gewoon de volgende opdracht op de terminal typt om de wijzigingen door te voeren:

source <file-name>

Lokale of sessiebrede omgevingsvariabelen in Linux in- of uitschakelen

Lokale omgevingsvariabelen kunnen worden gemaakt met de volgende opdrachten:

var=value 
OR
export var=value

Deze variabelen gelden voor de hele sessie en zijn alleen geldig voor de huidige terminalsessie. Om deze sessiebrede omgevingsvariabelen te wissen, kunnen de volgende opdrachten worden gebruikt:

1. Omg. gebruiken

Standaard vermeldt de opdracht "env" alle huidige omgevingsvariabelen. Maar als het wordt gebruikt met de '-i'-schakelaar, worden alle omgevingsvariabelen tijdelijk gewist en kan de gebruiker een opdracht uitvoeren in de huidige sessie als alle omgevingsvariabelen ontbreken.

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

Hier komt var=value overeen met elke lokale omgevingsvariabele die u alleen met deze opdracht wilt gebruiken.

env –i bash

Geeft een bash-shell die tijdelijk geen enkele omgevingsvariabele zou hebben. Maar als u de shell verlaat, worden alle variabelen hersteld.

2. Uitschakelen gebruiken

Een andere manier om de lokale omgevingsvariabele te wissen is door de opdracht unset te gebruiken. Om een lokale omgevingsvariabele tijdelijk uit te schakelen,

unset <var-name>

Waarbij var-name de naam is van de lokale variabele die u wilt deactiveren of wissen.

3. Stel de variabelenaam in op ”

Een andere, minder gebruikelijke manier is om de naam van de variabele die u wilt wissen in te stellen op '' (Leeg). Hierdoor wordt de waarde van de lokale variabele gewist voor de huidige sessie waarvoor deze actief is.

LET OP – U KUNT ZELFS MET DE WAARDEN VAN SYSTEEM- OF GEBRUIKERSOMGEVINGVARIABELEN SPELEN EN WIJZIGEN, MAAR WIJZIGINGEN ZULLEN ALLEEN IN DE HUIDIGE EINDSESSIE WEERGEVEN EN ZULLEN NIET PERMANENT ZIJN.

Leer hoe u gebruikersbrede en systeembrede omgevingsvariabelen kunt maken in Linux

In deze paragraaf gaan we leren hoe je lokale, gebruikers- en systeembrede omgevingsvariabelen in Linux in- of uitschakelt, met onderstaande voorbeelden:

1. Lokale variabelen in Linux instellen en uitschakelen

a.) Hier maken we een lokale variabele VAR1 en stellen deze in op een willekeurige waarde. Vervolgens gebruiken we unset om die lokale variabele te verwijderen, en aan het einde wordt die variabele verwijderd.

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

b.) Een andere manier om een lokale variabele te maken is door het export commando te gebruiken. De gemaakte lokale variabele zal beschikbaar zijn voor de huidige sessie. Om de variabele uit te schakelen, stelt u eenvoudigweg de waarde van de variabele in op ''.

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

c.) Hier hebben we een lokale variabele VAR2 gemaakt en deze op een waarde ingesteld. Om vervolgens een commando uit te voeren waarbij alle lokale en andere omgevingsvariabelen tijdelijk werden gewist, voerden we het 'env –i' commando uit. Deze opdracht voerde hier de bash-shell uit door alle andere omgevingsvariabelen te wissen. Na het invoeren van 'exit' op de aangeroepen bash-shell, zouden alle variabelen worden hersteld.

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

2. Gebruikersbrede omgevingsvariabelen in Linux instellen en uitschakelen

a.) Wijzig het .bashrc-bestand in uw thuismap om de omgevingsvariabele die u moet toevoegen te exporteren of in te stellen. Daarna bron het bestand, zodat de wijzigingen van kracht worden. Dan zie je dat de variabele ('CD' in mijn geval) van kracht wordt. Deze variabele is beschikbaar elke keer dat u een nieuwe terminal voor deze gebruiker opent, maar niet voor externe inlogsessies.

vi .bashrc

Voeg de volgende regel onderaan toe aan het .bashrc bestand.

export CD='This is TecMint Home'

Voer nu de volgende opdracht uit om nieuwe wijzigingen aan te brengen en te testen.

source .bashrc 
echo $CD

Om deze variabele te verwijderen, verwijdert u gewoon de volgende regel in het .bashrc bestand en plaatst u deze opnieuw:

b.) Om een variabele toe te voegen die beschikbaar zal zijn voor externe inlogsessies (dat wil zeggen wanneer u vanaf een extern systeem naar de gebruiker ssh), wijzigt u het bestand .bash_profile.

vi .bash_profile

Voeg de volgende regel onderaan toe aan het bestand .bash_profile.

export VAR2='This is TecMint Home'

Wanneer u dit bestand zoekt, zal de variabele beschikbaar zijn wanneer u naar deze gebruiker ssht, maar niet wanneer u een nieuwe lokale terminal opent.

source .bash_profile 
echo $VAR2

Hier is VAR2 in eerste instantie niet beschikbaar, maar als je ssh uitvoert naar de gebruiker op localhost, wordt de variabele beschikbaar.

ssh tecmint@localhost
echo $VAR2

Om deze variabele te verwijderen, verwijdert u gewoon de regel in het bestand .bash_profile die u hebt toegevoegd, en herbront u het bestand.

OPMERKING: deze variabelen zijn beschikbaar elke keer dat u bent ingelogd bij de huidige gebruiker, maar niet voor andere gebruikers.

3. Systeembrede omgevingsvariabelen in Linux instellen en uitschakelen

a.) Om een systeembrede variabele zonder login toe te voegen (d.w.z. een variabele die beschikbaar is voor alle gebruikers wanneer een van hen een nieuwe terminal opent, maar niet wanneer een gebruiker van de machine op afstand wordt benaderd), voegt u de variabele toe aan /etc/bash.bashrc bestand.

export VAR='This is system-wide variable'

Bron het bestand daarna.

source /etc/bash.bashrc 

Nu zal deze variabele voor elke gebruiker beschikbaar zijn wanneer hij een nieuwe terminal opent.

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

Hier is dezelfde variabele beschikbaar voor zowel de root-gebruiker als de normale gebruiker. U kunt dit verifiëren door in te loggen met een andere gebruiker.

b.) Als u wilt dat een omgevingsvariabele beschikbaar is wanneer een gebruiker op uw computer op afstand is ingelogd, maar niet bij het openen van een nieuwe terminal op een lokale machine, dan moet u het bestand bewerken – '/etc/profiel'.

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

Nadat u de variabele heeft toegevoegd, hoeft u het bestand alleen maar opnieuw te sourcen. Dan zou de variabele beschikbaar zijn.

source /etc/profile
echo $VAR1

Om deze variabele te verwijderen, verwijdert u de regel uit het bestand /etc/profile en zoekt u deze opnieuw uit.

c.) Als u echter een omgeving wilt toevoegen waarvan u wilt dat deze overal in het systeem beschikbaar is, zowel bij externe inlogsessies als bij lokale sessies (d.w.z. het openen van een nieuw terminalvenster) voor iedereen Gebruikers hoeven alleen maar de variabele te exporteren naar het bestand /etc/environment.

export VAR12='I am available everywhere'

Daarna hoeft u alleen maar het bestand te sourcen en de wijzigingen worden van kracht.

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

Zoals we zien is de omgevingsvariabele hier beschikbaar voor normale gebruikers, rootgebruikers en voor externe inlogsessies (hier voor localhost).

Om deze variabele te verwijderen, verwijdert u gewoon de vermelding in het bestand /etc/environment en geeft u deze opnieuw op, of logt u opnieuw in.

OPMERKING: wijzigingen worden van kracht wanneer u het bestand bront. Maar als dat niet het geval is, moet u mogelijk uitloggen en opnieuw inloggen.

Conclusie

Dit zijn dus enkele manieren waarop we de omgevingsvariabelen kunnen wijzigen. Als je nieuwe en interessante trucs voor hetzelfde vindt, vermeld dit dan in je opmerkingen.