GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tipps und Tricks zu Linux-Umgebungsvariablen

Umgebungsvariablen existieren, um Ihre Shell-Umgebung auf Linux-Systemen zu verbessern und zu standardisieren. Es gibt Standard-Umgebungsvariablen, die das System für Sie einrichtet, aber Sie können auch Ihre eigenen Umgebungsvariablen einrichten oder optional die Standard-Umgebungsvariablen ändern, um sie an Ihre Bedürfnisse anzupassen.

[ Kostenloser Download:Spickzettel für fortgeschrittene Linux-Befehle. ]

Beginnend mit env Befehl

Wenn Sie Ihre Umgebungsvariablen sehen möchten, verwenden Sie env Befehl und suchen Sie ganz links in der Ausgabe nach den Wörtern in Großbuchstaben. Dies sind Ihre Umgebungsvariablen, und ihre Werte stehen rechts:

 $ env
LS_COLORS=(long output)
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=rhel8t
XDG_SESSION_ID=5
USER=khess
SELINUX_ROLE_REQUESTED=
PWD=/home/khess
HOME=/home/khess
SSH_CLIENT=192.168.1.94 53911 22
SELINUX_LEVEL_REQUESTED= XDG_DATA_DIRS=/home/khess/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_TTY=/dev/pts/1
MAIL=/var/spool/mail/khess
TERM=xterm-256color
SHELL=/bin/bash SELINUX_USE_CURRENT_RANGE=
SHLVL=1
LOGNAME=khess
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000 PATH=/home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
HISTSIZE=1000
LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env 

Ich habe die Ausgabe von LS_COLORS weggelassen variabel, weil es so lang ist. Probieren Sie diesen Befehl auf Ihrem System aus, um zu sehen, wie die vollständige Ausgabe aussieht.

Viele Umgebungsvariablen werden gesetzt und dann aus /etc/profile exportiert Datei und die /etc/bashrc Datei. Es gibt eine Zeile in /etc/profile das lautet:

 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

Um dauerhafte Änderungen an den Umgebungsvariablen für alle neuen Konten vorzunehmen, gehen Sie zu Ihrem /etc/skel Dateien wie .bashrc , und ändern Sie die bereits vorhandenen oder geben Sie die neuen ein. Wenn Sie neue Benutzer erstellen, werden diese /etc/skel Dateien werden in das Home-Verzeichnis des neuen Benutzers kopiert.

Erkunden von Shell-Ebenen (SHLVL )

Um den Wert einer einzelnen Umgebungsvariablen abzurufen, geben Sie den folgenden Befehl mit SHLVL ein (Shell-Level) als Beispiel:

 $ echo $SHLVL 1

Diese Variable ändert sich je nachdem, wie viele Subshells Sie geöffnet haben. Geben Sie beispielsweise bash ein zweimal und geben Sie dann den Befehl erneut ein:

 $ bash 
$ bash echo $SHLVL 3

Ein Shell-Level von drei bedeutet, dass Sie zwei Subshells tief sind, geben Sie also exit ein zweimal, um zu Ihrer normalen Shell zurückzukehren.

[Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.] 

Manipulieren Ihres PATH Variable

Der PATH Variable enthält den Suchpfad zum Ausführen von Befehlen und Skripten. Um Ihren PATH zu sehen , geben Sie ein:

 $ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

Ändern Sie vorübergehend Ihren PATH indem Sie den folgenden Befehl eingeben, um /opt/bin hinzuzufügen :

 $ PATH=$PATH:/opt/bin
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin

Die Änderung ist temporär für die aktuelle Sitzung. Es ist nicht dauerhaft, da es nicht in .bashrc eingetragen wird Datei. Um die Änderung dauerhaft zu machen, geben Sie den Befehl PATH=$PATH:/opt/bin ein in die .bashrc Ihres Home-Verzeichnisses Datei.

Wenn Sie dies tun, erstellen Sie einen neuen PATH Variable durch Anhängen eines Verzeichnisses an den aktuellen PATH Variable, $PATH . Ein Doppelpunkt (: ) trennt PATH Einträge.

Entschlüsseln von $USER , $PWD und $LOGNAME

Ich hatte eine Theorie, von der ich glaube, dass sie von meinem eigenen guten Selbst widerlegt wurde. Meine Theorie war, dass die Befehle pwd und whoami wahrscheinlich nur den Inhalt der Shell-Variablen $PWD gelesen und ausgegeben und $USER oder $LOGNAME , bzw. Zu meiner Überraschung tun sie das nicht, nachdem sie sich den Quellcode angesehen haben. Vielleicht sollte ich sie umschreiben, um genau das zu tun. Es gibt keinen Grund, mehrere Bibliotheken und fast 400 Zeilen C-Code hinzuzufügen, um das Arbeitsverzeichnis anzuzeigen. Sie können einfach $PWD lesen und geben Sie das auf dem Bildschirm aus (stdout). Dasselbe gilt für whoami entweder mit $USER oder $LOGNAME .

Wenn Sie sich den Quellcode selbst ansehen möchten, finden Sie ihn auf GitHub und an anderen Stellen. Wenn Sie feststellen, dass diese Programme (oder andere) Shell-Variablen verwenden, würde ich gerne davon erfahren. Zugegeben, ich bin nicht so gut darin, C-Quellcode zu lesen, also könnten sie sehr gut Shell-Variablen verwenden, und ich würde es nie erfahren. Sie schienen einfach nicht nach dem, was ich gelesen und verstanden habe.

Die $SHELL spielen Spiel

In dieser letzten Übersicht über Umgebungsvariablen möchte ich Ihnen zeigen, wie die $SHELL Variable ist praktisch. Sie müssen nicht in Ihrer Standard-Shell bleiben, was wahrscheinlich Bash ist. Sie können jede auf dem System installierte Shell aufrufen und darin arbeiten. Um herauszufinden, welche Shells auf Ihrem System installiert sind, verwenden Sie den folgenden Befehl:

 $ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash

Alle diese sind eigentlich Bash, also seien Sie nicht aufgeregt. Wenn Sie Glück haben, sehen Sie möglicherweise auch Einträge für /bin/tcsh , /bin/csh , /bin/mksh , /bin/ksh , und /bin/rksh .

Sie können jede dieser Muscheln verwenden und in jeder unterschiedliche Dinge vor sich haben, wenn Sie dazu neigen. Angenommen, Sie sind ein Solaris-Administrator und möchten die Korn-Shell verwenden. Sie können Ihre Standard-Shell in /bin/ksh ändern mit dem chsh Befehl:

 $ chsh Changing shell for khess. New shell [/bin/bash]: /bin/ksh Password: Shell changed.

Wenn Sie jetzt echo $SHELL eingeben , lautet die Antwort /bin/bash , Sie müssen sich also abmelden und erneut anmelden, um die Änderung zu sehen. Sobald Sie sich ab- und wieder anmelden, erhalten Sie eine andere Antwort auf echo $SHELL .

Sie können andere Shells eingeben und echo $SHELL sollte Melden Sie Ihre aktuelle Shell und $SHLVL , die Sie darüber informiert, wie viele Granaten tief Sie sind.

Eigene Umgebungsvariablen setzen

Sie können Ihre eigenen Variablen in der Befehlszeile pro Sitzung festlegen oder sie dauerhaft machen, indem Sie sie in ~/.bashrc einfügen Datei, ~/.profile , oder die Startdatei, die Sie für Ihre Standard-Shell verwenden. Geben Sie in der Befehlszeile Ihre Umgebungsvariable und ihren Wert ein, wie Sie es zuvor beim Ändern des PATH getan haben Variable.

Abschluss

Shell- oder Umgebungsvariablen sind für Benutzer, Systemadministratoren und Programmierer gleichermaßen hilfreich. Sie sind in der Befehlszeile und in Skripten nützlich. Ich habe sie im Laufe der Jahre für viele verschiedene Zwecke verwendet, und obwohl einige von ihnen wahrscheinlich etwas unkonventionell sind, funktionierten und tun sie es immer noch. Erstellen Sie Ihre eigenen oder verwenden Sie die, die Ihnen vom System und den installierten Anwendungen zur Verfügung gestellt werden. Sie können Ihre Linux-Benutzererfahrung wirklich bereichern.

Als Randbemerkung zu Variablen und Shells:Glaubt jemand, dass diejenigen, die in JSON programmieren, nur die Bourne-Shell verwenden dürfen sollten? Diskutieren.


Linux
  1. Linux-Umgebungsvariablen:Lesen und Festlegen auf einem Linux-VPS

  2. Tipps/Tricks zur Linux-Kommandozeilennavigation 3 - die CDPATH-Umgebungsvariable

  3. Tipps und Tricks für curl und wget

  4. Linux .htaccess Tipps und Tricks

  5. Zugriff auf Umgebungsvariablen in Linux

Tipps und Tricks zur Verwendung von Strg+Z in Ubuntu Linux

So setzen und löschen Sie Umgebungsvariablen unter Linux

Beste Linux-Desktop-Umgebung:15 überprüft und verglichen

19 Nützliche Tipps und Tricks für die Linux-Befehlszeile

Beste Kombinationen aus Linux-Distribution und Desktop-Umgebung

Das Jahr von Linux auf dem (Windows-)Desktop - WSL-Tipps und Tricks