Wéi Setzt an Unset Lokal, Benotzer a System Wide Ëmfeld Variablen am Linux


Ëmfeld Variablen sinn e puer speziell Variablen déi an der Shell definéiert sinn a vu Programmer gebraucht ginn wärend der Ausféierung. Si kënne Systemdefinéiert oder Benotzerdefinéiert sinn. System definéiert Variablen sinn déi, déi vum System gesat ginn a gi vu Systemniveau Programmer benotzt.

Fir z.B. PWD Kommando ass eng ganz allgemeng Systemvariabel déi benotzt gëtt fir den aktuellen Aarbechtsverzeechnes ze späicheren. Benotzerdefinéiert Variablen ginn typesch vum Benotzer gesat, entweder temporär fir déi aktuell Shell oder permanent. Dat ganzt Konzept fir Ëmfeldvariablen ze setzen an unzestellen dréit ëm e puer Set vu Dateien a wéineg Kommandoen a verschidde Shells.

A méi breede Begrëffer kann eng Ëmfeldvariabel an dräi Aarte sinn:

Een definéiert fir déi aktuell Sessioun. Dës Ëmfeldvariablen daueren nëmme bis déi aktuell Sessioun, sief et Remote Login Sessioun, oder lokal Terminal Sessioun. Dës Variablen ginn net an all Konfiguratiounsdateien spezifizéiert a ginn erstallt a geläscht andeems Dir e spezielle Set vu Kommandoen benotzt.

Dëst sinn d'Variabelen déi fir e bestëmmte Benotzer definéiert sinn a gelueden ginn all Kéier wann e Benotzer sech mat enger lokaler Terminal Sessioun aloggen oder dee Benotzer mat Remote Login Sessioun ageloggt ass. Dës Variablen ginn normalerweis an de folgende Konfiguratiounsdateien agesat a gelueden: .bashrc, .bash_profile, .bash_login, .profile Dateien déi am Benotzer Heemverzeechnes präsent sinn.

Dëst sinn d'Ëmfeldvariablen déi systemwäit verfügbar sinn, dat heescht fir all d'Benotzer déi op deem System präsent sinn. Dës Variablen sinn a systemwäit Konfiguratiounsdateien präsent an de folgende Verzeichnisser a Dateien: /etc/environment, /etc/profile, /etc/profile.d /, /etc/bash.bashrc. Dës Variablen ginn all Kéier gelueden wann de System ugedriwwe gëtt an entweder lokal oder vun engem Benotzer ageloggt ass.

Versteesdemech User-Wide a System-wide Configuratiounsdateien

Hei beschreiwen mir kuerz verschidde Konfiguratiounsdateien uewen opgezielt, déi Ëmfeld Variablen halen, entweder systembreet oder Benotzerspezifesch.

Dës Datei ass Benotzerspezifesch Datei déi gelueden gëtt all Kéier wann de Benotzer eng nei lokal Sessioun erstellt, dat heescht an einfache Wierder, mécht en neien Terminal op. All Ëmweltverännerlechen, déi an dësem Fichier erstallt ginn, géifen a Kraaft trieden all Kéier wann eng nei lokal Sessioun gestart gëtt.

Dës Datei ass Benotzerspezifesch Remote Login Datei. Ëmfeldvariablen, déi an dëser Datei opgezielt sinn, ginn opgeruff all Kéier wann de Benotzer op afstand ageloggt ass, dh mat ssh Sessioun. Wann dës Datei net präsent ass, sicht de System entweder no .bash_login oder .profile Dateien.

Dës Datei ass systembreet Datei fir all Ëmfeldvariablen ze kreéieren, z'änneren oder ze läschen. Ëmfeld Variablen, déi an dëser Datei erstallt sinn, sinn iwwerall am System zougänglech, vun all Benotzer, souwuel lokal wéi wäit ewech.

Systembreet bashrc Datei. Dës Datei gëtt eemol fir all Benotzer gelueden, all Kéier wann de Benotzer eng lokal Terminal Sessioun opmaacht. Ëmfeld Variablen erstallt an dësem Fichier sinn zougänglech fir all Benotzer awer nëmmen duerch lokal Terminal Sessioun. Wann all Benotzer op där Maschinn op afstand via eng Remote Login Sessioun zougänglech ass, wieren dës Variabelen net sichtbar.

System breet Profildatei. All d'Variabelen, déi an dëser Datei erstallt sinn, si vun all Benotzer um System zougänglech, awer nëmmen wann d'Sessioun vum Benotzer op afstand opgeruff gëtt, dh iwwer Remote Login. All Variabel an dëser Datei ass net zougänglech fir lokal Login Sessioun dh wann de Benotzer en neien Terminal op sengem lokale System opmaacht.

Bemierkung: Ëmfeldvariablen erstallt mat Systembreet oder User-breet Konfiguratiounsdateien kënnen ofgeschaaft ginn andeems se se nëmmen aus dëse Dateien erofhuelen. Just datt no all Ännerung vun dësen Dateien, entweder ausloggen an erëm aloggen oder einfach de folgende Kommando um Terminal schreiwen fir d'Ännerungen a Kraaft ze huelen:

$ source <file-name>

Set oder unset Lokal oder Sessioun-breet Ëmfeld Variablen am Linux

Lokal Ëmfeld Variablen kënne mat de folgende Kommandoen erstallt ginn:

$ var=value 
OR
$ export var=value

Dës Variablen si Sessioun breet a gëlteg nëmme fir déi aktuell Terminal Sessioun. Fir dës Sessiounsbreet Ëmfeldvariablen ze läschen, kënnen folgend Kommandoen benotzt ginn:

Par défaut listt de Kommando \env\ all déi aktuell Ëmfeldvariablen op. Awer wann et mam -i Schalter benotzt gëtt, läscht et temporär all d'Ëmweltvariablen aus a léisst de Benotzer e Kommando an der aktueller Sessioun ausféieren an der Verontreiung vun allen Ëmfeldvariablen.

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

Hei entsprécht var=value all lokal Ëmfeldvariabel déi Dir nëmme mat dësem Kommando benotze wëllt.

$ env –i bash

Gëtt Bash Shell déi temporär keng vun der Ëmfeldvariabel hätt. Awer wéi Dir aus der Schuel erausgeet, wäerten all Variabelen restauréiert ginn.

En anere Wee fir d'lokal Ëmfeldvariabel ze läschen ass andeems Dir unset Kommando benotzt. Fir all lokal Ëmfeld Variabel temporär auszeschalten,

$ unset <var-name>

Wou, var-name den Numm vun der lokaler Variabel ass, déi Dir wëllt ofsetzen oder läschen.

Eng aner manner üblech Manéier wier den Numm vun der Variabel, déi Dir wëllt läschen, op (Eidel) setzen. Dëst géif de Wäert vun der lokaler Variabel fir déi aktuell Sessioun läschen, fir déi se aktiv ass.

NOTÉIERT - DIR KANN OCH MAT SPILLEN AN D'Wäerter VUN SYSTEM ODER BENOTZER Ëmweltvariabelen änneren, MÄ Ännere géifen NËMMEN AN AKTUELL TERMINAL SESSION REFLECTEREN AN NET PERMANENT SINN.

Léiert Wéi erstellt, Benotzerbreet a Systembreet Ëmfeld Variablen am Linux

An der Sektioun wäerte mir léiere wéi Dir lokal, Benotzer- a Systembreet Ëmfeldvariablen a Linux setzt oder aussetzt mat folgende Beispiller:

a.) Hei kreéiere mir eng lokal Variabel VAR1 a setzen se op all Wäert. Dann benotze mir unset fir déi lokal Variabel ze läschen, an um Enn gëtt dës Variabel geläscht.

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

b.) Eng aner Manéier fir eng lokal Variabel ze kreéieren ass andeems Dir Export Kommando benotzt. Déi lokal erstallt Variabel wäert fir déi aktuell Sessioun verfügbar sinn. Fir d'Variabel auszeschalten, setzt einfach de Wäert vun der Variabel op .

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

c.) Hei hu mir eng lokal Variabel VAR2 erstallt an op e Wäert gesat. Dann fir e Kommando auszeféieren fir all lokal an aner Ëmfeldvariablen temporär ze läschen, hu mir env –i Kommando ausgefouert. Dëse Kommando hei huet Bash Shell ausgefouert andeems se all aner Ëmfeldvariablen läschen. Nodeems Dir Exit op der opgeruffer Bash-Shell aginn hutt, wäerten all Variabelen restauréiert ginn.

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

a.) Änneren .bashrc Datei an Ärem Heemverzeichnis fir d'Ëmfeldsvariabel ze exportéieren oder ze setzen déi Dir addéiere musst. No deem Quell d'Datei, fir d'Ännerungen a Kraaft ze maachen. Da géift Dir d'Variabel gesinn (CD a mengem Fall), a Kraaft trieden. Dës Variabel wäert verfügbar sinn all Kéier wann Dir en neien Terminal fir dëse Benotzer opmaacht, awer net fir Remote Login Sessiounen.

$ vi .bashrc

Füügt déi folgend Zeil op .bashrc Datei um ënnen.

export CD='This is TecMint Home'

Fuert elo de folgende Kommando fir nei Ännerungen ze huelen an ze testen.

$ source .bashrc 
$ echo $CD

Fir dës Variabel ze läschen, läscht just déi folgend Zeil an der .bashrc Datei a re-source se:

b.) Fir eng Variabel ze addéieren déi verfügbar ass fir Remote Login Sessiounen (dh wann Dir de Benotzer vum Remote System ssh), ännert .bash_profile Datei.

$ vi .bash_profile

Füügt déi folgend Zeil op .bash_profile Datei um ënnen.

export VAR2='This is TecMint Home'

Wann Dir dës Datei kritt, ass d'Variabel verfügbar wann Dir dëse Benotzer ssh, awer net wann Dir en neie lokalen Terminal opmaacht.

$ source .bash_profile 
$ echo $VAR2

Hei ass VAR2 ursprénglech net verfügbar, awer wann Dir ssh mam Benotzer op localhost mécht, gëtt d'Variabel verfügbar.

$ ssh [email 
$ echo $VAR2

Fir dës Variabel ze läschen, läscht just d'Linn an der .bash_profile Datei déi Dir derbäigesat hutt, a resource de Fichier.

NOTÉIERT: Dës Variablen sinn all Kéier wann Dir op den aktuelle Benotzer ageloggt sidd, awer net fir aner Benotzer verfügbar.

a.) Fir systembreet No-Login Variabel ze addéieren (dh eng déi fir all Benotzer verfügbar ass wann iergendeen en neien Terminal opmaacht awer net wann e Benotzer vun der Maschinn op afstand zougänglech ass), füügt d'Variabel un /etc/bash. bashrc Datei.

export VAR='This is system-wide variable'

Duerno, Quell d'Datei.

$ source /etc/bash.bashrc 

Elo wäert dës Variabel fir all Benotzer verfügbar sinn wann hien en neien Terminal opmaacht.

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

Hei ass déiselwecht Variabel verfügbar fir Root Benotzer wéi och normal Benotzer. Dir kënnt dëst verifizéieren andeems Dir Iech op anere Benotzer aloggen.

b.) Wann Dir wëllt datt eng Ëmfeldvariabel verfügbar ass wann ee vun de Benotzer op Ärer Maschinn op afstand ageloggt ass, awer net wann Dir en neien Terminal op der lokaler Maschinn opmaacht, da musst Dir d'Datei änneren - /etc/ Profil.

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

Nodeems Dir d'Variabel bäigefüügt hutt, gitt just d'Datei nei Quell. Da wier d'Variabel verfügbar.

$ source /etc/profile
$ echo $VAR1

Fir dës Variabel ze läschen, läscht d'Linn aus /etc/profile Datei a resource se.

c.) Wéi och ëmmer, wann Dir en Ëmfeld wëllt addéieren dat Dir wëllt am ganze System verfügbar sinn, souwuel op FernLogin Sessiounen wéi och lokal Sessiounen (dh eng nei Terminalfenster opmaachen) fir all Benotzer, exportéiert just d'Variabel an /etc/environment Datei.

export VAR12='I am available everywhere'

Duerno just d'Quell vun der Datei an d'Ännerunge géifen a Kraaft trieden.

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

Hei, wéi mir gesinn, ass d'Ëmfeldvariabel verfügbar fir normale Benotzer, Root-Benotzer, souwéi op Remote Login Sessioun (hei, fir localhost).

Fir dës Variabel ze läschen, läscht just d'Entrée an der /etc/environment-Datei a re-source se oder loggt Iech erëm un.

NOTÉIERT: Ännerungen trëtt a Kraaft wann Dir d'Datei Quell. Awer wann net, da musst Dir Iech vläicht ausloggen an erëm aloggen.

Conclusioun

Also, dëst sinn e puer Weeër fir d'Ëmfeldvariablen z'änneren. Wann Dir nei an interessant Tricks fir déiselwecht fannt, mellt Iech an Äre Kommentaren.