Unix / Linux - Umgebung
In diesem Kapitel werden wir detailliert auf die Unix-Umgebung eingehen. Ein wichtiges Unix-Konzept ist dasenvironment, die durch Umgebungsvariablen definiert ist. Einige werden vom System festgelegt, andere von Ihnen, andere von der Shell oder einem Programm, das ein anderes Programm lädt.
Eine Variable ist eine Zeichenfolge, der wir einen Wert zuweisen. Der zugewiesene Wert kann eine Nummer, ein Text, ein Dateiname, ein Gerät oder eine andere Art von Daten sein.
Zum Beispiel setzen wir zuerst eine Variable TEST und greifen dann mit der auf ihren Wert zu echo Befehl -
$TEST="Unix Programming"
$echo $TEST
Es ergibt sich folgendes Ergebnis.
Unix Programming
Beachten Sie, dass die Umgebungsvariablen ohne Verwendung von festgelegt werden $sign, aber beim Zugriff verwenden wir das $ -Zeichen als Präfix. Diese Variablen behalten ihre Werte bei, bis wir die Shell verlassen.
Wenn Sie sich beim System anmelden, wird die Shell einer Phase unterzogen, die aufgerufen wird initializationdie Umgebung einrichten. Dies ist normalerweise ein zweistufiger Prozess, bei dem die Shell die folgenden Dateien liest:
- /etc/profile
- profile
Der Prozess ist wie folgt -
Die Shell prüft, ob die Datei vorhanden ist /etc/profile existiert.
Wenn es existiert, liest die Shell es. Andernfalls wird diese Datei übersprungen. Es wird keine Fehlermeldung angezeigt.
Die Shell prüft, ob die Datei vorhanden ist .profileexistiert in Ihrem Home-Verzeichnis. Ihr Home-Verzeichnis ist das Verzeichnis, in dem Sie nach dem Anmelden beginnen.
Wenn es existiert, liest die Shell es; Andernfalls überspringt die Shell es. Es wird keine Fehlermeldung angezeigt.
Sobald diese beiden Dateien gelesen wurden, zeigt die Shell eine Eingabeaufforderung an -
$
Dies ist die Eingabeaufforderung, an der Sie Befehle eingeben können, um sie ausführen zu lassen.
Note - Der hier beschriebene Shell-Initialisierungsprozess gilt für alle Bourne Geben Sie Shells ein, aber einige zusätzliche Dateien werden von verwendet bash und ksh.
Die .profile-Datei
Die Datei /etc/profile wird vom Systemadministrator Ihres Unix-Computers verwaltet und enthält Informationen zur Shell-Initialisierung, die von allen Benutzern auf einem System benötigt werden.
Die Datei .profileist unter Ihrer Kontrolle. Sie können dieser Datei so viele Informationen zur Shell-Anpassung hinzufügen, wie Sie möchten. Die Mindestmenge an Informationen, die Sie konfigurieren müssen, umfasst:
- Der Typ des verwendeten Terminals.
- Eine Liste der Verzeichnisse, in denen die Befehle gefunden werden sollen.
- Eine Liste von Variablen, die das Erscheinungsbild Ihres Terminals beeinflussen.
Sie können Ihre überprüfen .profileverfügbar in Ihrem Home-Verzeichnis. Öffnen Sie es mit dem vi-Editor und überprüfen Sie alle für Ihre Umgebung festgelegten Variablen.
Einstellen des Terminaltyps
Normalerweise wird der von Ihnen verwendete Terminaltyp automatisch von einem der beiden konfiguriert login oder gettyProgramme. Manchmal errät der automatische Konfigurationsprozess Ihr Terminal falsch.
Wenn Ihr Terminal falsch eingestellt ist, sieht die Ausgabe der Befehle möglicherweise seltsam aus oder Sie können möglicherweise nicht richtig mit der Shell interagieren.
Um sicherzustellen, dass dies nicht der Fall ist, setzen die meisten Benutzer ihr Terminal folgendermaßen auf den kleinsten gemeinsamen Nenner:
$TERM=vt100
$
PATH einstellen
Wenn Sie einen Befehl an der Eingabeaufforderung eingeben, muss die Shell den Befehl suchen, bevor er ausgeführt werden kann.
Die Variable PATH gibt die Positionen an, an denen die Shell nach Befehlen suchen soll. Normalerweise wird die Pfadvariable wie folgt eingestellt:
$PATH=/bin:/usr/bin
$
Hier wird jeder einzelne Eintrag durch das Doppelpunktzeichen getrennt (:)sind Verzeichnisse. Wenn Sie die Shell auffordern, einen Befehl auszuführen, und sie ihn in keinem der in der PATH-Variablen angegebenen Verzeichnisse finden kann, wird eine Meldung ähnlich der folgenden angezeigt:
$hello
hello: not found
$
Es gibt Variablen wie PS1 und PS2, die im nächsten Abschnitt behandelt werden.
PS1- und PS2-Variablen
Die Zeichen, die die Shell als Eingabeaufforderung anzeigt, werden in der Variablen PS1 gespeichert. Sie können diese Variable beliebig ändern. Sobald Sie es ändern, wird es von diesem Punkt an von der Shell verwendet.
Zum Beispiel, wenn Sie den Befehl ausgegeben haben -
$PS1='=>'
=>
=>
=>
Ihre Eingabeaufforderung wird =>. Um den Wert von einzustellenPS1 Geben Sie den folgenden Befehl aus, damit das Arbeitsverzeichnis angezeigt wird.
=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
Das Ergebnis dieses Befehls ist, dass die Eingabeaufforderung den Benutzernamen des Benutzers, den Namen des Computers (Hostname) und das Arbeitsverzeichnis anzeigt.
Es gibt ziemlich viele escape sequencesdas kann als Wertargumente für PS1 verwendet werden; Versuchen Sie, sich auf das Kritischste zu beschränken, damit die Eingabeaufforderung Sie nicht mit Informationen überfordert.
Sr.Nr. | Escape-Sequenz & Beschreibung |
---|---|
1 | \t Aktuelle Zeit, ausgedrückt als HH: MM: SS |
2 | \d Aktuelles Datum, ausgedrückt als Wochentag Monat Datum |
3 | \n Neue Zeile |
4 | \s Aktuelle Shell-Umgebung |
5 | \W Arbeitsverzeichnis |
6 | \w Vollständiger Pfad des Arbeitsverzeichnisses |
7 | \u Benutzername des aktuellen Benutzers |
8 | \h Hostname des aktuellen Computers |
9 | \# Befehlsnummer des aktuellen Befehls. Erhöht sich, wenn ein neuer Befehl eingegeben wird |
10 | \$ Wenn die effektive UID 0 ist (dh wenn Sie als root angemeldet sind), beenden Sie die Eingabeaufforderung mit dem Zeichen #. Andernfalls verwenden Sie das $ -Zeichen |
Sie können die Änderung jedes Mal selbst vornehmen, wenn Sie sich anmelden, oder Sie können die Änderung automatisch in PS1 vornehmen lassen, indem Sie sie zu Ihrer hinzufügen .profile Datei.
Wenn Sie einen unvollständigen Befehl ausgeben, zeigt die Shell eine sekundäre Eingabeaufforderung an und wartet darauf, dass Sie den Befehl ausführen und drücken Enter nochmal.
Die standardmäßige sekundäre Eingabeaufforderung lautet > (das Zeichen größer als), kann aber durch Neudefinition des Vorzeichens geändert werden PS2 Shell-Variable -
Das folgende Beispiel verwendet die standardmäßige sekundäre Eingabeaufforderung:
$ echo "this is a
> test"
this is a
test
$
Das folgende Beispiel definiert PS2 mit einer benutzerdefinierten Eingabeaufforderung neu.
$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$
Umgebungsvariablen
Es folgt die unvollständige Liste wichtiger Umgebungsvariablen. Diese Variablen werden wie unten angegeben festgelegt und aufgerufen -
Sr.Nr. | Variable & Beschreibung |
---|---|
1 | DISPLAY Enthält die Kennung für die Anzeige, die X11 Programme sollten standardmäßig verwendet werden. |
2 | HOME Gibt das Ausgangsverzeichnis des aktuellen Benutzers an: das Standardargument für die CD built-in Befehl. |
3 | IFS Zeigt die Internal Field Separator Dies wird vom Parser für die Wortteilung nach der Erweiterung verwendet. |
4 | LANG LANG wird auf das Standardgebietsschema des Systems erweitert. LC_ALL kann verwendet werden, um dies zu überschreiben. Zum Beispiel, wenn sein Wert istpt_BRDann wird die Sprache auf (brasilianisches) Portugiesisch und das Gebietsschema auf Brasilien eingestellt. |
5 | LD_LIBRARY_PATH Ein Unix-System mit einem dynamischen Linker enthält eine in zwei Spalten getrennte Liste von Verzeichnissen, die der dynamische Linker beim Erstellen eines Prozessabbilds nach der Ausführung nach freigegebenen Objekten suchen sollte, bevor er in anderen Verzeichnissen sucht. |
6 | PATH Gibt den Suchpfad für Befehle an. Es ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen die Shell nach Befehlen sucht. |
7 | PWD Gibt das aktuelle Arbeitsverzeichnis an, das mit dem Befehl cd festgelegt wurde. |
8 | RANDOM Generiert bei jeder Referenzierung eine zufällige Ganzzahl zwischen 0 und 32.767. |
9 | SHLVL Erhöht sich jedes Mal um eins, wenn eine Instanz von Bash gestartet wird. Diese Variable ist nützlich, um festzustellen, ob der integrierte Exit-Befehl die aktuelle Sitzung beendet. |
10 | TERM Bezieht sich auf den Anzeigetyp. |
11 | TZ Bezieht sich auf die Zeitzone. Es kann Werte wie GMT, AST usw. annehmen. |
12 | UID Wird auf die numerische Benutzer-ID des aktuellen Benutzers erweitert, die beim Shell-Start initialisiert wurde. |
Das folgende Beispiel zeigt einige Umgebungsvariablen:
$ echo $HOME
/root
]$ echo $DISPLAY
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$