Website-Suche

So setzen und deaktivieren Sie lokale, benutzer- und systemweite Umgebungsvariablen unter Linux


Umgebungsvariablen sind einige spezielle Variablen, die in der Shell definiert werden und von Programmen während der Ausführung benötigt werden. Sie können systemdefiniert oder benutzerdefiniert sein. Systemdefinierte Variablen sind solche, die vom System festgelegt und von Programmen auf Systemebene verwendet werden.

Für z.B. Der PWD-Befehl ist eine sehr häufige Systemvariable, die zum Speichern des aktuellen Arbeitsverzeichnisses verwendet wird. Benutzerdefinierte Variablen werden normalerweise vom Benutzer entweder vorübergehend für die aktuelle Shell oder dauerhaft festgelegt. Das gesamte Konzept des Setzens und Deaktivierens von Umgebungsvariablen dreht sich um eine Reihe von Dateien, wenige Befehle und verschiedene Shells.

Im weiteren Sinne kann eine Umgebungsvariable drei Arten haben:

1. Lokale Umgebungsvariable

Eine für die aktuelle Sitzung definierte. Diese Umgebungsvariablen bleiben nur bis zur aktuellen Sitzung bestehen, sei es eine Remote-Anmeldesitzung oder eine lokale Terminalsitzung. Diese Variablen sind in keiner Konfigurationsdatei angegeben und werden mithilfe eines speziellen Befehlssatzes erstellt und entfernt.

2. Benutzerumgebungsvariable

Dies sind die Variablen, die für einen bestimmten Benutzer definiert sind und jedes Mal geladen werden, wenn sich ein Benutzer über eine lokale Terminalsitzung anmeldet oder dieser Benutzer über eine Remote-Anmeldesitzung angemeldet wird. Diese Variablen werden normalerweise in den folgenden Konfigurationsdateien festgelegt und aus diesen geladen: .bashrc, .bash_profile, .bash_login, .profile Dateien, die im Home-Verzeichnis des Benutzers vorhanden sind.

3. Systemweite Umgebungsvariablen

Dies sind die Umgebungsvariablen, die systemweit verfügbar sind, d. h. für alle auf diesem System vorhandenen Benutzer. Diese Variablen sind in systemweiten Konfigurationsdateien in den folgenden Verzeichnissen und Dateien vorhanden: /etc/environment, /etc/profile, /etc/profile.d /, /etc/bash.bashrc. Diese Variablen werden jedes Mal geladen, wenn das System eingeschaltet wird und sich ein Benutzer entweder lokal oder remote anmeldet.

Benutzerweite und systemweite Konfigurationsdateien verstehen

Hier beschreiben wir kurz die verschiedenen oben aufgeführten Konfigurationsdateien, die systemweite oder benutzerspezifische Umgebungsvariablen enthalten.

.bashrc

Bei dieser Datei handelt es sich um eine benutzerspezifische Datei, die jedes Mal geladen wird, wenn der Benutzer eine neue lokale Sitzung erstellt, d. h. in einfachen Worten, wenn er ein neues Terminal öffnet. Alle in dieser Datei erstellten Umgebungsvariablen werden jedes Mal wirksam, wenn eine neue lokale Sitzung gestartet wird.

.bash_profile

Bei dieser Datei handelt es sich um eine benutzerspezifische Remote-Anmeldedatei. Die in dieser Datei aufgeführten Umgebungsvariablen werden jedes Mal aufgerufen, wenn der Benutzer remote angemeldet ist, d. h. über eine SSH-Sitzung. Wenn diese Datei nicht vorhanden ist, sucht das System entweder nach den Dateien .bash_login oder .profile.

/etc/environment

Bei dieser Datei handelt es sich um eine systemweite Datei zum Erstellen, Bearbeiten oder Entfernen von Umgebungsvariablen. In dieser Datei erstellte Umgebungsvariablen sind im gesamten System für jeden einzelnen Benutzer zugänglich, sowohl lokal als auch remote.

/etc/bash.bashrc

Systemweite bashrc-Datei. Diese Datei wird für jeden Benutzer einmal geladen, jedes Mal, wenn dieser Benutzer eine lokale Terminalsitzung öffnet. In dieser Datei erstellte Umgebungsvariablen sind für alle Benutzer zugänglich, jedoch nur über eine lokale Terminalsitzung. Wenn auf einen Benutzer auf diesem Computer über eine Remote-Anmeldesitzung remote zugegriffen wird, sind diese Variablen nicht sichtbar.

/etc/profile

Systemweite Profildatei. Alle in dieser Datei erstellten Variablen sind für jeden Benutzer im System zugänglich, jedoch nur, wenn die Sitzung dieses Benutzers remote aufgerufen wird, d. h. über eine Remote-Anmeldung. Auf Variablen in dieser Datei kann für die lokale Anmeldesitzung nicht zugegriffen werden, d. h. wenn der Benutzer ein neues Terminal auf seinem lokalen System öffnet.

Hinweis: Umgebungsvariablen, die mit systemweiten oder benutzerweiten Konfigurationsdateien erstellt wurden, können durch Entfernen entfernt werden nur aus diesen Dateien. Melden Sie sich nach jeder Änderung dieser Dateien entweder ab und wieder an oder geben Sie einfach den folgenden Befehl auf dem Terminal ein, damit die Änderungen wirksam werden:

source <file-name>

Lokale oder sitzungsweite Umgebungsvariablen unter Linux festlegen oder deaktivieren

Lokale Umgebungsvariablen können mit den folgenden Befehlen erstellt werden:

var=value 
OR
export var=value

Diese Variablen gelten sitzungsweit und sind nur für die aktuelle Terminalsitzung gültig. Um diese sitzungsweiten Umgebungsvariablen zu löschen, können die folgenden Befehle verwendet werden:

1. Verwendung von env

Standardmäßig listet der Befehl "env" alle aktuellen Umgebungsvariablen auf. Bei Verwendung mit dem Schalter '-i' werden jedoch vorübergehend alle Umgebungsvariablen gelöscht und der Benutzer kann in der aktuellen Sitzung einen Befehl ausführen, wenn nicht alle Umgebungsvariablen vorhanden sind.

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

Hier entspricht var=value einer beliebigen lokalen Umgebungsvariablen, die Sie nur mit diesem Befehl verwenden möchten.

env –i bash

Gibt eine Bash-Shell an, die vorübergehend keine Umgebungsvariablen haben würde. Beim Verlassen der Shell werden jedoch alle Variablen wiederhergestellt.

2. Unscharf verwenden

Eine andere Möglichkeit, lokale Umgebungsvariablen zu löschen, ist die Verwendung des Befehls unset. Um eine lokale Umgebungsvariable vorübergehend zu deaktivieren,

unset <var-name>

Dabei ist var-name der Name der lokalen Variablen, deren Festlegung oder Löschung Sie aufheben möchten.

3. Setzen Sie den Variablennamen auf „

Eine andere, weniger verbreitete Methode wäre, den Namen der Variablen, die Sie löschen möchten, auf '' (Leer) zu setzen. Dadurch würde der Wert der lokalen Variablen für die aktuelle Sitzung gelöscht, für die sie aktiv ist.

HINWEIS – SIE KÖNNEN AUCH MIT DEN WERTEN VON SYSTEM- ODER BENUTZERUMGEBUNGSVARIABLEN SPIELEN UND SIE ÄNDERN, ABER ÄNDERUNGEN WÜRDEN NUR IN DER AKTUELLEN TERMINALSITZUNG WIDERSPRECHEN UND NICHT DAUERHAFT SEIN.

Erfahren Sie, wie Sie benutzer- und systemweite Umgebungsvariablen unter Linux erstellen

In diesem Abschnitt erfahren Sie anhand der folgenden Beispiele, wie Sie lokale, benutzer- und systemweite Umgebungsvariablen unter Linux festlegen oder deaktivieren:

1. Lokale Variablen unter Linux festlegen und deaktivieren

a.) Hier erstellen wir eine lokale Variable VAR1 und setzen sie auf einen beliebigen Wert. Dann verwenden wir unset, um diese lokale Variable zu entfernen, und am Ende wird diese Variable entfernt.

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

b.) Eine andere Möglichkeit, eine lokale Variable zu erstellen, ist die Verwendung des Befehls export. Die erstellte lokale Variable ist für die aktuelle Sitzung verfügbar. Um die Variable zu deaktivieren, setzen Sie einfach den Wert der Variablen auf ''.

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

c.) Hier haben wir eine lokale Variable VAR2 erstellt und auf einen Wert gesetzt. Um dann einen Befehl auszuführen, der vorübergehend alle lokalen und anderen Umgebungsvariablen löscht, haben wir den Befehl 'env –i' ausgeführt. Dieser Befehl führte hier die Bash-Shell aus, indem er alle anderen Umgebungsvariablen löschte. Nach der Eingabe von 'exit' in der aufgerufenen Bash-Shell würden alle Variablen wiederhergestellt.

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

2. Benutzerweite Umgebungsvariablen unter Linux festlegen und deaktivieren

a.) Ändern Sie die Datei .bashrc in Ihrem Home-Verzeichnis, um sie zu exportieren, oder legen Sie die Umgebungsvariable fest, die Sie hinzufügen müssen. Anschließend sourcen Sie die Datei, damit die Änderungen wirksam werden. Dann würden Sie sehen, wie die Variable (in meinem Fall 'CD') wirksam wird. Diese Variable ist jedes Mal verfügbar, wenn Sie ein neues Terminal für diesen Benutzer öffnen, jedoch nicht für Remote-Anmeldesitzungen.

vi .bashrc

Fügen Sie unten die folgende Zeile zur Datei .bashrc hinzu.

export CD='This is TecMint Home'

Führen Sie nun den folgenden Befehl aus, um neue Änderungen zu übernehmen und zu testen.

source .bashrc 
echo $CD

Um diese Variable zu entfernen, entfernen Sie einfach die folgende Zeile in der Datei .bashrc und belegen Sie sie neu:

b.) Um eine Variable hinzuzufügen, die für Remote-Anmeldesitzungen verfügbar ist (d. h. wenn Sie vom Remote-System aus eine SSH-Verbindung zum Benutzer herstellen), ändern Sie die Datei .bash_profile.

vi .bash_profile

Fügen Sie unten die folgende Zeile zur Datei .bash_profile hinzu.

export VAR2='This is TecMint Home'

Wenn Sie diese Datei beziehen, ist die Variable verfügbar, wenn Sie eine SSH-Verbindung zu diesem Benutzer herstellen, jedoch nicht beim Öffnen eines neuen lokalen Terminals.

source .bash_profile 
echo $VAR2

Hier ist VAR2 zunächst nicht verfügbar, aber wenn Sie SSH an den Benutzer auf localhost ausführen, wird die Variable verfügbar.

ssh tecmint@localhost
echo $VAR2

Um diese Variable zu entfernen, entfernen Sie einfach die Zeile in der Datei .bash_profile, die Sie hinzugefügt haben, und erstellen Sie eine neue Quelle für die Datei.

HINWEIS: Diese Variablen sind jedes Mal verfügbar, wenn Sie sich beim aktuellen Benutzer anmelden, jedoch nicht für andere Benutzer.

3. Systemweite Umgebungsvariablen unter Linux festlegen und deaktivieren

a.) Um eine systemweite No-Login-Variable hinzuzufügen (d. h. eine, die für alle Benutzer verfügbar ist, wenn einer von ihnen ein neues Terminal öffnet, aber nicht, wenn ein Benutzer der Maschine remote zugreift), fügen Sie die Variable zu < hinzu/etc/bash.bashrc Datei.

export VAR='This is system-wide variable'

Geben Sie anschließend die Datei als Quelle an.

source /etc/bash.bashrc 

Jetzt steht diese Variable jedem Benutzer zur Verfügung, wenn er ein neues Terminal öffnet.

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

Hier ist die gleiche Variable sowohl für den Root-Benutzer als auch für den normalen Benutzer verfügbar. Sie können dies überprüfen, indem Sie sich bei einem anderen Benutzer anmelden.

b.) Wenn Sie möchten, dass eine Umgebungsvariable verfügbar ist, wenn ein Benutzer auf Ihrem Computer remote angemeldet ist, aber nicht beim Öffnen eines neuen Terminals auf dem lokalen Computer, müssen Sie die Datei bearbeiten – '/etc/profile'.

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

Nachdem Sie die Variable hinzugefügt haben, müssen Sie die Datei einfach neu belegen. Dann wäre die Variable verfügbar.

source /etc/profile
echo $VAR1

Um diese Variable zu entfernen, entfernen Sie die Zeile aus der Datei /etc/profile und belegen Sie sie neu.

c.) Wenn Sie jedoch eine Umgebung hinzufügen möchten, die im gesamten System verfügbar sein soll, sowohl bei Remote-Anmeldesitzungen als auch bei lokalen Sitzungen (d. h. beim Öffnen eines neuen Terminalfensters) für alle Benutzer exportieren einfach die Variable in die Datei /etc/environment.

export VAR12='I am available everywhere'

Danach geben Sie einfach die Datei als Quelle ein und die Änderungen werden wirksam.

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

Wie wir sehen, ist die Umgebungsvariable hier für normale Benutzer, Root-Benutzer sowie für Remote-Anmeldesitzungen (hier für localhost) verfügbar.

Um diese Variable zu löschen, entfernen Sie einfach den Eintrag in der Datei /etc/environment und geben Sie eine neue Quelle ein oder melden Sie sich erneut an.

HINWEIS: Änderungen werden wirksam, wenn Sie die Datei als Quelle angeben. Wenn nicht, müssen Sie sich möglicherweise abmelden und erneut anmelden.

Abschluss

Dies sind also einige Möglichkeiten, wie wir die Umgebungsvariablen ändern können. Wenn Sie neue und interessante Tricks dafür finden, erwähnen Sie dies bitte in Ihren Kommentaren.