Vorwort Das Konfigurationsdateisystem der CentOS-Umgebungsvariablen ist ein hierarchisches System, das den Konfigurationsdateien anderer Mehrbenutzer-Anwendungssysteme ähnelt. Es gibt globale, Benutzer- und Shell-Konfigurationsdateien. Darüber hinaus haben verschiedene Ebenen manchmal Vererbungsbeziehungen. In diesem Artikel werden die relevanten Inhalte zu CentOS-Umgebungsvariablen und Konfigurationsdateien ausführlich vorgestellt. Werfen wir einen Blick auf die ausführliche Einführung. Was sind Umgebungsvariablen? Die Bash-Shell verwendet eine Funktion namens Umgebungsvariablen, um Informationen zu Ihrer Shell-Sitzung und Arbeitsumgebung zu speichern. Das heißt, es ermöglicht die Speicherung von Daten im Speicher, sodass in einem Programm oder einer Shell ausgeführte Skripte darauf zugreifen können. In der Bash-Shell werden Umgebungsvariablen in zwei Kategorien unterteilt:
Globale Umgebungsvariablen Globale Umgebungsvariablen sind für die Shell-Sitzung und alle erzeugten Sub-Shells sichtbar. Lokale Variablen sind nur für die Shell sichtbar, die sie erstellt hat. Um globale Variablen anzuzeigen, können Sie den Befehl env oder printenv verwenden. [root@dev ~]# Umgebung HOSTNAME=localhost TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=10.0.100.17 56344 22 SSH_TTY=/dev/pts/0 USER=root [root@dev ~] [root@dev ~]# printenv HOSTNAME=localhost TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=10.0.100.17 56344 22 SSH_TTY=/dev/pts/0 USER=root [root@dev ~]# printenv TERM linux Verwenden Sie Umgebungsvariablen, indem Sie $ + Variablenname verwenden. [root@dev ~]# echo $HOME /Wurzel Systemumgebungsvariablen werden im Allgemeinen in Großbuchstaben geschrieben, um sie von Umgebungsvariablen normaler Benutzer zu unterscheiden. Lokale Umgebungsvariablen Wie der Name schon sagt, sind lokale Umgebungsvariablen nur innerhalb des Prozesses sichtbar, in dem sie definiert sind. Der Befehl „Set“ zeigt alle für einen bestimmten Prozess festgelegten Umgebungsvariablen an, einschließlich lokaler, globaler und benutzerdefinierter Variablen. [root@dev ~]# festlegen BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="Veröffentlichung" [5]="x86_64-redhat-linux-gnu") BASH_VERSION='4.1.2(1)-Version' FARBEN=/etc/DIR_COLORS SPALTEN=165 Benutzerdefinierte Variablen Nachdem Sie eine Bash-Shell gestartet haben, können Sie lokale Variablen erstellen, die innerhalb dieses Shell-Prozesses sichtbar sind. Die vom Prozess erstellte Unter-Shell kann die lokalen Variablen der übergeordneten Shell nicht lesen. [root@dev-Shell]# sh a.sh 2 zweiundzwanzig 2 [root@dev-Shell]# cat a.sh #!/bin/bash ein = 1; exportiere b=2; sch b.sch echo $b; [root@dev-Shell]# cat b.sh #!/bin/bash echo $a; echo $b; b=22; echo $b; [root@dev-Shell]# sh a.sh 2 zweiundzwanzig 2 Benutzer können Variablen exportieren, um sie zu globalen Variablen zu machen, sodass Subshells sie auch lesen können. Wenn die untergeordnete Shell die Variable ändert, ist die übergeordnete Shell davon nicht betroffen. Wenn Sie eine Umgebungsvariable in einer Untershell festlegen, was passiert, wenn Sie sie in der übergeordneten Shell lesen möchten? Ein Anwendungsszenario ist: Mehrere Ausführungsskripte basieren auf einer gemeinsamen Umgebungskonfiguration, die in einem env.sh-Skript geschrieben ist. Wie können andere Ausführungsskripte die Variablen in env.sh lesen? Das Exportieren von Variablen in einer untergeordneten Shell hat keine Auswirkungen auf die übergeordnete Shell. Der Quellbefehl (aus der C-Shell) ist ein integrierter Befehl der Bash-Shell. Der Punktbefehl, ein Punktsymbol (aus der Bourne Shell), ist eine andere Bezeichnung für Quelle. Beide Befehle verwenden als Argument ein Skript, das als Umgebung der aktuellen Shell ausgeführt wird, d. h. es wird kein neuer Unterprozess gestartet. Alle im Skript festgelegten Variablen werden Teil der aktuellen Shell. [root@dev-Shell]# cat c.sh . ./env.sh Quelle ./profile.sh echo $env; echo $profile; [root@dev-Shell]# cat env.sh Umgebung = "Test"; [root@dev-Shell]# cat-Profil.sh Profil="Entwickler"; [root@dev-Shell]# sh c.sh prüfen Entwickler Wenn Sie die Umgebungsvariable löschen möchten Variablenname aufheben Festlegen globaler Umgebungsvariablen Aus dem Obigen können wir erkennen, ob wir in diesem Prozess und im untergeordneten Prozess gemeinsame Umgebungsvariablen verwenden möchten. Dies kann erreicht werden, indem der Quellbefehl zum Lesen desselben Umgebungsvariablenskripts verwendet wird. Dies ist ein benutzerdefiniertes Schema. Aber oft kennen wir die Quelle der globalen Umgebungsvariable, die wir lesen müssen, nicht und benötigen daher eine Standardumgebungsvariable zum Lesen der Datei. Wenn Sie sich bei Ihrem Linux-System anmelden, wird die Bash-Shell als Anmelde-Shell gestartet. Die Login-Shell liest aus 5 verschiedenen Startdateien
/etc/Profil Die Datei /etc/profile ist die standardmäßige Hauptstartdatei für die Bash-Shell. Solange Sie sich beim Linux-System anmelden, führt bash die Befehle in der Startdatei /etc/profile aus. [root@dev-Shell]# cat /etc/profile # /etc/profile # Systemweite Umgebungs- und Startprogramme zur Einrichtung der Anmeldung # Funktionen und Aliase kommen in /etc/bashrc # Es ist KEINE gute Idee, diese Datei zu ändern, es sei denn, Sie wissen, was Sie # tun. Es ist viel besser, ein custom.sh Shell-Skript in # /etc/profile.d/ um benutzerdefinierte Änderungen an Ihrer Umgebung vorzunehmen, da dies # verhindert, dass bei zukünftigen Updates eine Zusammenführung erforderlich ist. Pfadmunge () { Fall ":${PATH}:" in *:"$1":*) ;; *) wenn [ "$2" = "nach" ] ; dann PFAD=$PFAD:$1 anders PFAD=$1:$PFAD fi esac } wenn [ -x /usr/bin/id ]; dann wenn [ -z "$EUID" ]; dann # Ksh-Problemumgehung EUID=`id -u` UID=`id -ru` fi BENUTZER="`id -un`" LOGNAME=$USER MAIL="/var/spool/mail/$USER" fi # Pfadmanipulation wenn [ "$EUID" = "0" ]; dann Pfadmunge /sbin Pfad /usr/sbin Pfad /usr/local/sbin anders pathmunge /usr/local/sbin nach pathmunge /usr/sbin nach pathmunge /sbin nach fi HOSTNAME=`/bin/hostname 2>/dev/null` HISTSIZE=1000 wenn [ "$HISTCONTROL" = "Leerzeichen ignorieren" ] ; dann export HISTCONTROL=ignoreboth anders export HISTCONTROL=ignoredups fi export PFAD BENUTZER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL # Standardmäßig soll umask gesetzt werden. Dies setzt es für die Login-Shell # Der aktuelle Schwellenwert für vom System reservierte UIDs/GIDs beträgt 200 # Sie können die Gültigkeit der uidgid-Reservierung überprüfen in # /usr/share/doc/setup-*/uidgid-Datei wenn [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; dann umask 002 anders umask 022 fi für i in /etc/profile.d/*.sh; mache wenn [ -r "$i" ]; dann wenn [ "${-#*i}" != "$-" ]; dann . "$i" anders . "$i" >/dev/null 2>&1 fi fi Erledigt nicht gesetzt i unset -f Pfad Diese Datei liest alle *.sh-Dateien unter /etc/profile.d/ und lädt Variablen durch Klicken auf den Befehl (Quelle). Das heißt, die in /etc/profile und /etc/profile.d/*.sh definierten Variablen sind globale Systemumgebungsvariablen. $HOME/.bash_profile Die Startdateien unter $HOME sind alle benutzerspezifische Startdateien, die die Umgebungsvariablen des Benutzers definieren. /etc/profile sind die Umgebungsvariablen des Systems für alle Benutzer. Die Shell führt die erste gefundene Datei in der folgenden Reihenfolge aus und ignoriert den Rest:
.bashrc wird über .bash_profile aufgerufen. [root@dev-Shell]# cat ~/.bash_profile # .bash_profile # Holen Sie sich die Aliase und Funktionen wenn [ -f ~/.bashrc ]; dann . ~/.bashrc fi # Benutzerspezifische Umgebung und Startprogramme PATH=$PATH:$HOME/bin Exportpfad Zusammenfassen: Legen Sie die zu setzenden systemglobalen Umgebungsvariablen, wie beispielsweise JAVA_HOME, in das Verzeichnis /etc/profile.d/ und definieren Sie diese in Form von *.sh-Skripten. Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Vertieftes Verständnis davon in JavaScript
>>: MySQL-Inspektionsskript (unbedingt lesen)
Chinesisch-Tutorial https://www.ncnynl.com/catego...
<br />Vor nicht allzu langer Zeit habe ich a...
Inhaltsverzeichnis Was ist Docker einsetzen 1. Zi...
Inhaltsverzeichnis 1. Grundlegende Umgebungskonfi...
Der Browser zeigt Bilder im TIF-Format an Code kop...
Es gibt die folgenden vier häufig verwendeten Met...
Mindmap Er sieht wahrscheinlich so aus: Die meist...
Inhaltsverzeichnis Code-Optimierung Verwenden der...
Seit seiner Einführung im Jahr 2009 wird Flex von...
Erstellen eines Projektverzeichnisses mkdir php E...
Vorwort In diesem Artikel wird das Installationst...
<Vorlage> <div id="Wurzel">...
Erste Verwendung von Docker zum lokalen Verpacken...
Vorbereiten: Definieren Sie eine Lehrertabelle un...
Effektbild (die Rahmenfarbe ist zu hell, setzen S...