Linux-Pfad, wie Sie den Pfad in den Ordner angeben. Umgebungsvariablen in Linux. Anmerkungen zu anderen Muscheln als Bash

Umgebungsvariablen in Linux sind spezielle Variablen, die von der Shell definiert und von Programmen während der Ausführung verwendet werden. Sie können vom System und vom Benutzer bestimmt werden. Die Linux-Umgebungsvariablen werden vom System ermittelt und werden von Systemebenenprogrammen verwendet.

Beispielsweise verwendet der PWD-Befehl eine Systemvariable, um das vorherige Betriebsverzeichnis zu speichern. Benutzerdefinierte Umgebungsvariablen werden vom Benutzer von dem Benutzer für die aktuelle Shell installiert, vorübergehend oder ständig. Das gesamte Konzept des Hinzufügens und Entfernens von Variablen der Shell dreht sich um mehrere Dateien, Teams und verschiedene Muscheln.

Wenn Sie häufiger aussehen, kann die Umgebungsvariable drei Typen sein:

1. Lokale Umgebung Variablen

Diese Variablen sind nur für die aktuelle Sitzung definiert. Sie werden unwiderruflich gelöscht, nachdem die Sitzung abgeschlossen ist. Sei es Fernzugriff oder Terminalemulator. Sie werden nicht in keiner Dateidateien gespeichert, werden jedoch mit speziellen Befehlen erstellt und gelöscht.

2. Benutzerdefinierte Variablen Shell

Diese variablen Muscheln in Linux sind für einen bestimmten Benutzer definiert und werden jedes Mal geladen, wenn es mit einem lokalen Terminal in das System eingeht, oder ist remote verbunden. Solche Variablen werden in der Regel in den Konfigurationsdateien gespeichert: .bashrc, .bash_profile, .bash_login ,.profile oder andere Dateien, die im Benutzerverzeichnis gepostet wurde.

3. Systemumgebungsvariablen

Diese Variablen sind für alle Benutzer im gesamten System verfügbar. Sie werden am Anfang des Systems aus dem Systemkonfigurationssystem geladen: / etc / umwelt, / etc / profil, /etc/profile.d/tc/bash.bashrc.

Konfigurationsdateien der Umweltumgebung Linux

Hier berücksichtigen wir die verschiedenen oben aufgeführten Konfigurationsdateien kurz, die zur Konfiguration von Umgebungsvariablen für das gesamte System oder einen bestimmten Benutzer verwendet werden.

.bashrc.

Dies ist eine bestimmte Benutzervariable-Datei. Wenn der Benutzer jedes Mal eine Terminalsitzung erstellt, wird ein neues Terminal geöffnet. Alle in dieser Datei erstellten Umgebungsvariablen in Kraft treten jedes Mal in Kraft, wenn eine neue Terminalsitzung begann.

.bash_profile.

Diese Variablen treten jedes Mal in Kraft, wenn der Benutzer von SSH entfernt angeschlossen ist. Wenn diese Datei fehlt, sucht das System. Bash_login oder.profile.

/ etc / umwelt

Diese Datei soll alle Umgebungsvariablen auf Systemebene erstellen, bearbeiten und löschen. Umgebungsvariablen, die in dieser Datei erstellt wurden, sind für das gesamte System für jeden Benutzer und sogar mit einer Remote-Verbindung verfügbar.

/etc/bash.bashrc.

System Bashrc. Diese Datei wird für jeden Benutzer ausgeführt, wobei jedes Mal eine neue Terminalsitzung erstellt wird. Es funktioniert nur für lokale Benutzer, wenn sie über das Internet verbunden sind, solche Variablen sind nicht sichtbar.

/ etc / profil

Profilsystemdatei. Alle Variablen aus dieser Datei stehen jedem Benutzer in das System nur dann zur Verfügung, wenn er aus der Ferne eingetragen ist. Sie sind jedoch nicht verfügbar, wenn Sie eine lokale Terminalsitzung erstellen, das heißt, wenn Sie einfach das Terminal entdecken.

Alle mit diesen Dateien erstellten Linux-Umgebungsvariablen können nur durch Entfernen von dort entfernt werden. Erst nach jeder Änderung müssen Sie entweder beenden und anmelden, oder diesen Befehl ausführen:

quellname_name.

Hinzufügen von Benutzer- und Systemumgebungsvariablen in Linux

Wenn Sie jetzt eine kleine Theorie kennen, wenden wir uns an die Praxis. Lokale Umgebung Variablen in Linux können durch folgende Befehle erstellt werden:

var \u003d Wert.
$ Export var \u003d Wert

Diese Variablen sind nur für die aktuelle Terminalsitzung verfügbar.

Um Umgebungsvariablen zu löschen, können Sie mehrere Befehle verwenden:

1. ENV.

Standardmäßig können Sie alle etablierten Umgebungsvariablen mit ENV ansehen. Mit der -I-Option können Sie jedoch alle Variablen der Shell vorübergehend löschen und den Befehl ohne Variablen ausführen.

eNV -I-Team.

VAR ist eine beliebige Variable, die Sie dieses Team übertragen möchten.

Ein solches Team startet die Shell überhaupt ohne Umweltvariablen:

Nach dem Beginn einer solchen Umgebung stehen keine Variablen zur Verfügung, aber nach dem Ausgang wird alles an seinen Platz zurückkehren.

2. UNSET verwenden.

Dies ist eine andere Möglichkeit, um Umgebungsvariablen Linux zu entfernen. UNSET löscht eine Variable nach Namen bis zum Ende der aktuellen Sitzung:

nichtet name_name

3. Stellen Sie den Wert der Variablen in "" ein

Dies ist der einfachste Weg, um Umgebungsvariablen in Linux zu entfernen, indem Sie den leeren Wert der Variablen einstellen, Sie löschen sie bis zum Ende der aktuellen Sitzung.

Hinweis: Mit solchen Methoden können Sie die Werte von System- oder Benutzervariablen ändern, sie sind jedoch nur für die aktuelle Sitzung relevant.

Erstellen von Benutzer- und Systemumgebungsvariablen

Überlegen Sie in diesem Abschnitt, wie System- und Benutzervariablen nicht nur für die aktuelle Sitzung installiert und gelöscht werden sollen, und so dass der Effekt nach dem Neustart gespeichert wird.

1. Installieren Sie lokale Variablen in Linux installieren und löschen

Lassen Sie uns eine lokale Variable-VARE erstellen und einen beliebigen Wert einstellen, und löschen Sie ihn dann miteinander und stellen Sie sicher, dass es entfernt wird:

Var1 \u003d "losst"
$ Echo $ var1
$ UnSet var1.
$ Echo $ var1

Eine andere Möglichkeit, eine Variable zu erstellen, ist der Exportbefehl. Entfernen Sie es einen leeren Wert:

avar \u003d "Losst" exportieren
$ echo $ var
$ Var \u003d.
$ echo $ var

Erstellen Sie jetzt eine Variable VAR2, die auch den Wert eingestellt. Und löschen Sie dann alle lokalen Variablen vorübergehend, indem Sie den ENV -I ausführen. Es wird die Hülle ohne Variablen starten. Nach dem Eingabe des Exits werden alle Variablen wiederhergestellt.

Var2 \u003d "losst"
$ Echo $ var2
$ Env -i bash
$ Echo $ var2

Benutzerdefinierte Variablen installieren und löschen

Bearbeiten Sie das Feld.bashrc, in Ihrem Home-Verzeichnis, indem Sie den Befehl Exportieren hinzufügen, um die gewünschte Variable zu exportieren. Führen Sie dann den Quellbefehl aus, um Änderungen anzuwenden. Erstellen Sie zum Beispiel eine variable CD:

Fügen Sie eine solche Zeile hinzu (O, dann einfügen, dann ESC und: WQ):

export-CD \u003d "Das ist das Losst-Zuhause"

Nun bleibt es, die Konfiguration zu aktualisieren:

quelle .bashrc.
$ Echo $ CD

Um diese Variable zu entfernen, entfernen Sie einfach aus. Bashrc.

Fügen Sie nun die Umgebungsvariable hinzu mit. Bash_Profile. Diese Variable, wie Sie bereits wissen, werden nur bei Remote-Eintrag verfügbar sein:

vi .bash_profile.

Fügen Sie eine Zeile hinzu:

export Var2 \u003d "Dies ist ein Losst-Zuhause"

Und führen Sie diese Befehle aus, um die Änderungen anzuwenden und den Zugabe der Variablen zu überprüfen:

quelle .bash_profile.
$ Echo $ var2

Die Variable ist nicht verfügbar, da Sie eine lokale Terminalsitzung erstellt haben, jetzt eine Verbindung zu SSH herstellen:

ssh. [E-Mail geschützt]
$ Echo $ var2

Sie können diese Umgebungsvariable sowie im vorherigen Fall löschen, indem Sie ihn aus der Datei entfernen.

Kommentar: Diese Variablen sind immer verfügbar, aber nicht für alle Benutzer.

Installieren und Entfernen von Systemumgebungsvariablen

Erstellen Sie eine Variable, die allen Benutzern verfügbar ist, in allen Terminalsitzungen, außer gelöscht, indem Sie ihn an /etc/bash.profile hinzufügen:

vi /etc/bash.profile.

export Var \u003d "Dies ist systemweite Variable"

Dann aktualisieren wir:

quelle /etc/bash.bashrc.

Diese Variable ist jetzt für alle Benutzer verfügbar, in allen Terminals:

echo $ var.
$ sudo su.
$ echo $ var
$ su -
$ echo $ var

Wenn Sie eine Umgebungsvariable für alle Benutzer zur Verfügung stellen möchten, die mit diesem Gerät aus der Ferne verbunden sind, bearbeiten Sie die Datei / etc / Profile:

export Var1 \u003d "Dies ist systemweite Variable für nur Remote-Sessions"

Aktualisieren Sie die Konfiguration und überprüfen Sie die Verfügbarkeit der Variablen, es ist nur aus der Remote verfügbar:

quelle / etc / Profil
$ Echo $ var1

Wenn Sie die Umgebungsvariable in Linux hinzufügen müssen, sodass er verfügbar ist und aus der Ferne und für lokale Sitzungen verfügbar ist, exportieren Sie ihn auf / etc / umgebung:

vI / etc / umwelt

var 12 exportieren \u003d "Ich bin überall verfügbar"

Prüfen:

quelle / etc / umwelt
$ Echo $ var12
$ sudo su.
$ Echo $ var12
$ Exit.
$ Ssh localhost.
$ Echo $ var12

Ich frage mich, wo der neue Pfad der Pfadumgebungsvariablen hinzugefügt werden muss. Ich weiß, dass dies durch Bearbeitung erfolgen kann. Bashrc (zum Beispiel), aber es ist unklar, wie es geht.

Auf diese Weise:

EXPORT PATH \u003d ~ / opt / bin: $ path

Exportpfad \u003d $ Pfad: ~ / opt / bin

11 Antworten

Einfaches Material

Pfad \u003d $ Pfad: ~ / opt / bin pfad \u003d ~ / opt / bin: $ path

je nachdem, ob Sie dem Ende einen ~ / opt / bin-Code hinzufügen möchten (um alle anderen Verzeichnisse zu suchen, wenn ein Programm mit demselben Namen in mehreren Verzeichnissen vorhanden ist) oder am Anfang (um nach allen anderen Verzeichnissen zu suchen) .

Sie können gleichzeitig mehrere Einträge hinzufügen. Pfad \u003d $ Pfad: ~ / opt / bin: ~ / opt / knoten / bin oder änderung der Reihenfolge ist einfach ausgezeichnet.

Sie benötigen keinen Export, wenn die Variable bereits in der Umgebung ist: Jede Änderung des Variablenwerts spiegelt sich in der Umgebung wider. Der Weg ist ziemlich viel in der Umwelt; Alle UNIX-Systeme setzen es sehr früh (in der Regel im ersten Prozess selbst).

Wenn Ihr Pfad von vielen verschiedenen Komponenten erstellt wird, können Sie doppelte Datensätze erhalten. Erfahren Sie, wie Sie einen Pfad in das Home-Verzeichnis hinzufügen, das UNIX erkannt wird, welcher Befehl? Und löschen Sie sich wiederholte Probleme von $ -pfad mit dem Befehl awk, um Vervielfältigungen zu vermeiden oder zu löschen.

Wo man putet

Bitte beachten Sie, dass ~ / .bash_rc nicht von einem Programm gelesen wird, und ~ / .bashrc ist die Konfigurationsdatei von Bash Interactive Instanz. Sie sollten die Umgebungsvariablen in ~ / .bashrc nicht ermitteln. Der richtige Ort, um die Umgebungsvariablen zu ermitteln, z. B. Pfad, ist ~ / .profile (oder ~ / .bash_profile, wenn Sie die Shell außer Bash nicht mögen). Sehen Sie, was der Unterschied zwischen ihnen und welcher sollte ich verwenden?

Anmerkungen zu anderen Muscheln als Bash

In Bash, KSH und ZSH, Export - spezielle Syntax und beide Pfad \u003d ~ / opt / bin: $ path and export path \u003d ~ / opt / bin: $ path Machen Sie auch die richtigen Dinge. In anderen Bourne / POSIX-Muscheln, wie einem Bindestrich (Welcher / bin / sh auf vielen Systemen), wird der Export als ein normales Team analysiert, das zwei Unterschiede impliziert:

  • ~ Nur am Anfang des Wortes analysiert, mit Ausnahme der Zuordnungen (erfahren Sie, wie Sie einen Pfad in ein Home-Verzeichnis hinzufügen, das UNIX erkannt wird, für den der Befehl erforderlich ist?;
  • $ Path Externe doppelte Zitate Pausen Wenn der Pfad Leerzeichen enthält oder \\ [*? .

Also, in den Muscheln, wie dem Strich, Exportpfad \u003d ~ / opt / bin: $ path setzt den Pfad zum wörtlichen String ~ / opt / bin /: gefolgt von path an erster Stelle. Pfad \u003d ~ / opt / bin: $ path (einfaches Ziel) erfordert keine Zitate und tut alles korrekt. Wenn Sie den Export in einem tragbaren Skript verwenden möchten, müssen Sie einen Exportpfad schreiben \u003d "$ home / opt / bin: $ path" oder path \u003d ~ / opt / bin: $ path Exportpfad (oder Pfad \u003d $ Opt / bin: $ path Exportpfad zur Tellerhaltung auch für die Bourne-Shell, die Export Var \u003d Wert nicht akzeptiert und den Tilde nicht erweitert hat).

 ¹ In Bourne-Muscheln war es falsch (wie in der Real Bourne Shell, und nicht in modernen Muscheln im Stil von POSIX), aber es ist unwahrscheinlich, dass Sie heute in solchen alten Muscheln stoßen. Sub\u003e

In jedem Fall funktioniert es, aber sie tun nicht dasselbe: Pfadelemente werden von links nach rechts geprüft. Im ersten Beispiel haben ausführbare Dateien in ~ / opt / bin in ~ / opt / bin eine Priorität oben installiert, beispielsweise in / usr / bin, die möglicherweise sein oder nicht sein, was Sie möchten.

Insbesondere in Bezug auf die Sicherheit ist es gefährlich, Wege nach vorne hinzuzufügen, denn wenn jemand auf Ihren Eintrag zu Ihrem ~ / opt / bin zugreifen kann, können sie beispielsweise einen weiteren ls platzieren, den Sie wahrscheinlich statt / bin / ls, nicht merken. Stellen Sie sich jetzt das gleiche für SSH oder Ihren Browser oder Ihre Wahl ... (das gleiche ist dreimal auf dem Weg.)

Ich verwirrte mich in Frage 2 (da es aus der Frage genommen wird, da es mit einem nicht zusammenhängenden Problem verbunden war):

Was ist der effektive Weg, um zusätzliche Wege zu unterschiedlichen Zeilen hinzuzufügen? Zunächst dachte ich, es könnte einen Trick machen:

EXPORT PATH \u003d $ path: ~ / opt / bin Exportpfad \u003d $ path: ~ / opt / knoten / bin

Dies ist jedoch nicht daran, dass der zweite Zweck nicht nur ~ / opt / knoten / bin hinzugefügt, sondern auch vom Pfad verschrieben wird.

Dies ist eine mögliche Problemumgehung:

Exportpfad \u003d $ Pfad: ~ / opt / bin: ~ / opt / knoten / bin

Aber für den Bequemlichkeit des Lesens würde ich es vorziehen, ein Ziel für einen Pfad zu haben.

Wenn du sagst

Pfad \u003d ~ / opt / bin

das Alle.was in Ihrem Weg ist. Pfad ist nur eine variable Umgebung, und wenn Sie zum Pfad hinzufügen möchten, müssen Sie die Variable mit dem gewünschten Inhalt neu erstellen. Das ist, was Sie als ein Beispiel geben, um Frage 2 zu finden, genau das, was Sie tun möchten, wenn ich den Punkt der Frage nicht vollständig vermisst habe.

Ich benutze beide Formulare in meinem Code. Ich habe ein gemeinsames Profil, das ich für jedes Auto eingesetzte, auf dem ich arbeite, was so aussieht: Um potenziell fehlende Verzeichnisse aufzunehmen:

EXPORT PATH \u003d / Opt / BIN: / BEREICH / BIN: / BIN: / BERATE / BIN: / BIN: / Usr / Bein: / usr / sbin: / usr / bin / x11 # Fügen Sie optionale Elemente zum Pfad für Bindir in ein $ Home / Local / Bin $ Home / Bin; Tun, wenn [-d $ bindir]; Dann path \u003d $ path: $ (bindir) fi gemacht

Linux bestimmt den ausführbaren Suchpfad von der Umgebungsvariablen von $ Path. Verwenden Sie zum Hinzufügen eines Verzeichnisses / Daten / Myscripts an den oberen Rand der Umgebungsvariablen $ der $ Pfad, verwenden Sie Folgendes:

Pfad \u003d / Daten / Myscripts: $ path

Um dieses Verzeichnis bis zum Ende des Weges hinzuzufügen, verwenden Sie den folgenden Befehl:

Pfad \u003d $ Pfad: / Daten / MyScripts

Die vorherigen eignen sich jedoch nicht, denn wenn Sie die Umgebungsvariable im Skript installieren, ist diese Änderung nur im Skript gültig. Diese Einschränkung ist auf zwei Arten begrenzt:

  • Wenn Sie im Inneren des Skripts die Umgebungsvariable exportieren, ist sie im Rahmen von Programmen, die durch das Skript verursacht werden, wirksam. Bitte beachten Sie, dass dies nicht in dem Programm, das das Skript verursacht hat, nicht wirksam ist.
  • Wenn das Programm, das das Skript verursacht, dass das Skript anstelle eines Anrufs eingeschaltet wird, sind alle Umweltänderungen im Skript im Anrufprogramm wirksam. Eine solche Einbeziehung kann mit dem Befehl DOT-Befehl oder des Quellenbefehls durchgeführt werden.

$ Home / myscript.sh Source $ Home / myscript.sh

Die Inklusion enthält im Wesentlichen das "Angerufene" Skript im Anrufszenario. Es sieht aus, als würde es in Cclude in C aussehen. Daher ist es in der Skript- oder Anrufprogramm wirksam. Natürlich ist dies natürlich nicht effektiv für Programme oder Skripts, die vom Anrufer verursacht werden. Um es bis zur Anrufkette effizient zu gestalten, müssen Sie mit dem Befehl Export-Befehl die Einstellung der Umgebungsvariablen befolgen.

Als Beispiel enthält das Bash-Shell-Programm den Inhalt der Datei.Bash_Profile, um einzuschalten. Setzen Sie also folgende 2 Zeilen v.bash_profile:

Pfad \u003d $ Pfad: / Daten / MyScripts Exportpfad

legen Sie diese zwei Codezeilen effektiv in das Bash-Programm. Somit enthält die Variablen von $ Home / myscript.sh in der Bash $ / myscript.sh, und aufgrund von Exportanweisungen haben alle Programme namens Bash eine modifizierte $ Pfad-Variable. Und da alle Programme, die Sie aus der Bash-Einladung ausführen, als Bash bezeichnet werden, gilt der neue Pfad für alles, was Sie aus der Bash-Einladung ausführen.

Die unterste Linie ist, dass Sie dem Pfad ein neues Verzeichnis hinzufügen, das Sie zum Hinzufügen oder Hinzufügen eines Verzeichnisses in der Umgebungsvariablen von $-Pfad in einem aktivierten Skript, und Sie müssen die Umgebungsvariable von $ Pfad exportieren.

Ich habe seit einiger Zeit mit mir zwei Pathadd- und Pathrm-Funktionen beibehalten, mit denen der Pfad Elemente hinzugefügt wird, ohne sich um Vervielfältigungen zu sorgen.

pathadd akzeptiert ein Wachstum-Argument und ein optionales After-Argument, das, falls hinzugefügt, zum Pfad hinzufügen, ansonsten fügt es hinzu.

Wenn Sie in jeder Situation den Weg hinzufügen, möchten Sie wahrscheinlich alles überschreiben, was bereits unterwegs ist, also fügte ich es vor, standardmäßig hinzuzufügen.

Paatdd () (neuelement \u003d $ (1% /) Wenn [-d "$ 1"] &&! Echo $ path | grep -e -q "(^ | :) $ upwelement ($ | :)"; dann, wenn [ "$ 2" \u003d "after"]; dann Pfad \u003d "$ path: $ upwelement" else path \u003d "$ upwelement: $ path" fi fi) pathrm (path \u003d "$ (Echo $ path | sed -e" S; \\ (^ \\ |: \\) $ (1% /) \\ (: \\ | \\ $ \\); \\ 1 \\ 2; g "-e" s; ^: \\ |: $; G "-E" s;::;:; g ")")

Legen Sie sie in ein beliebiges Skript, das Sie ändern möchten, um die Pfadumgebung zu ändern, und jetzt können Sie dies tun.

Pathadd "/ Foo / Bar" Pathadd "/ BAZ / BAT" nach dem Exportpfad

Sie sind garantiert, dass Sie keinen Pfad hinzufügen, wenn es bereits existiert. Wenn Sie am Anfang starten / bat anfangen möchten.

Pathrm "/ BAZ / BAT" Pathadd "/ BAZ / BAT" Exportpfad

Jetzt kann irgendwelche Möglichkeiten in den Vordergrund bewegt werden, wenn er bereits ohne Verdoppelung unterwegs ist.

Armentichtliche Methode zum Hinzufügen / Vorausbildung

Es gibt viele Überlegungen, die sich auf die Wahl des Hinzufügens und Hinzufügens beziehen. Viele von ihnen sind in anderen Antworten beschrieben, also werde ich sie hier nicht wiederholen.

Ein wichtiger Punkt ist, dass auch wenn systemische Skripts es nicht verwenden (ich frage mich, warum) * 1, eine bulletproof-Methode zum Hinzufügen eines Pfads (z. B. $ Home / bin) an einen variablen Mittwochpfad

Pfad \u003d "$ (Pfad: + $ (Pfad) :) $ Home / Bin"

hinzuzufügen (anstelle von Pfad \u003d "$ path: $ home / bin") und

Pfad \u003d "$ Home / Bin $ (Pfad: +: $ (Pfad))"

hinzuzufügen (anstelle von Pfad \u003d "$ Home / bin: $ path")

Dies vermeidet den falschen Blei- / Enddolen, wenn ein $ Pfad zunächst leer ist, dass er unerwünschte Nebenwirkungen aufweisen kann und ein Albtraum werden kann, ist er beispiellos zu finden (diese Antwort hält kurz den Fall von Awk-Way).

$ (Parameter: + Word)

Wenn der Parameter-Parameter NULL oder UNSET ist, wird nichts ersetzt, ansonsten wird das Wortwort ersetzt.

Also, $ (Pfad: + $ (Pfad) :) erweitert: 1) Nichts, wenn Pfad NULL oder UNSET, 2) $ (Pfad): Wenn der Pfad installiert ist.

Hinweis. Dies ist für Bash.

* 1 Ich habe gerade festgestellt, dass Skripts wie Devtoolset-6 / Enable wirklich verwendet werden, $ Cat / Opt / RH / Devtoolset-6 / Enable # Allgemeine Umgebungsvariablen Export-Pfad \u003d / opt / rh / devtoolset-6 / root / usr / bin $ (Pfad: +: $ (Pfad)) ...

Ich kann nicht mit anderen Distributionen sprechen, aber Ubuntu verfügt über eine Datei, / etc / umgebung, die ein Standard-Suchpfad für alle Benutzer ist. Da mein Computer nur von mir benutzt wird, habe ich Verzeichnisse, die ich auf dem Weg dorthin will, auf dem Weg, wenn dies kein vorübergehender Ergänzungsmittel ist, den ich in das Skript eingegeben habe.

Für mich (in Mac OS X 10.9.5), füge ein Pfadname hinzu (z. B. / MyPathname) zu Datei / etc / etc / -pfade sehr gut.

Vor dem Bearbeiten wird Echo $ Pfad zurückgegeben:

Usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin

Nach dem Bearbeiten von / etc / von Pfads und Neustart der Shell wird der variable $ -Pfad mit / pathname hinzugefügt. In der Tat kehrt Echo $ path zurück:

Usr / bin: / bin: / usr / sbin: / sbin: / mypathname

Es ist passiert, so dass / MyPathName der Variablen von $-Pfad hinzugefügt wurde.

Betriebssysteme verwenden normalerweise Umgebungsvariablen, um globale Einstellungen zu ermitteln oder den Betrieb von Programmen zu steuern. Die Pfadvariable ist eine der Umgebungsvariablen und wird ohne Ihr Wissen ständig verwendet. Die Variable speichert die Liste der Verzeichnisse, in denen sich ausführbare Dateien befinden.

Schritte

  1. 1 Finden Sie den aktuellen Pfad, indem Sie den Echo $ PATH-Befehl eingeben. Eine Liste von Verzeichnissen wird geöffnet, wie unten gezeigt (Beispiel):
    • [E-Mail geschützt]: ~ $ Echo $ path / home / uzair / bin: / usr / local / sbin: / usr / local / bin: / usr / bin: / bin: / usr / spiele
    • Hinweis: Kataloge werden durch Dickdarm getrennt.
  2. 2 Ziellinde hinzufügen:/ SBIN und: / usr / sbin: Zum aktuellen Pfad, indem Sie den Befehl eingeben:
  3. 3 Um zu bestätigen, dass die Pfadvariable geändert wurde, geben Sie den Befehl ein:
    • [E-Mail geschützt]: ~ $ ECHO $ \u200b\u200bpath / home / uzair / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / spiele
    • Denken Sie daran, dass die vorübergehenden Änderungen vorübergehend sind und beim Neustart des Systems storniert werden.
  4. 4 Überprüfen Sie die Leistung von Programmen mit einer temporären Variablen.
  5. 5 Um dauerhafte Änderungen an der Pfadvariable vorzunehmen, fügen Sie der Datei ~ / .bashrc dieselbe Zeichenfolge hinzu

Warnungen

  • Ändern der Pfadvariablen kann zu einem instabilen Betrieb des Betriebssystems führen. Die Variable wird verwendet, um nach ausführbaren Dateien zu suchen. Wenn die Variable falsch konfiguriert ist, funktionieren die Programme mit Misserfolgen oder funktionieren überhaupt nicht. Überprüfen Sie immer die Richtigkeit der Programme mit der temporären Variablen, bevor Sie Änderungen in der Datei ~ / .bashrc schreiben.

Was ist das? Viele Befehle, die Sie in der Befehlszeile eingeben, bedürfen der Verwendung eines externen Programms, das aus dem Dateisystem heruntergeladen wird. Beispielsweise befinden sich solche Befehle wie MKDIR und WC eigentlich im Ordner / bin.

Wenn Sie die Anweisung eingeben, dass die Bash-Hülle nicht erkennt, versucht es, es als Programm auszuführen, und gibt einen Fehler zurück, wenn das Programm den Namen nicht findet. Und dies gilt nicht nur für die wichtigsten Befehle, die wir aufgrund der Befehlszeile von der Befehlszeile ein Programm ausführen können.


Aber als ob Linux im Dateisystem gibt, weiß, welche Programme, aus denen die Verzeichnisse ausgeführt werden sollen? Betriebssystem verwendet eine SYSTEM-Umgebungsvariable, um eine Teilmenge von Ordnern anzugeben, in denen Sie beim Erhalt eines unbekannten Befehls suchen sollten. Diese Variable wird als Pfad bezeichnet und kann vom nächsten Echo-Befehl auf dem Bildschirm angezeigt werden ($ -Symbol):

Echo $ Pfad.

Das Ergebnis dieses Befehls sieht aus wie die folgenden sieben absoluten Pfade zu Ordnern, die von Colon getrennt sind:

Usr / local / bin: / sbin: / bin: / sbin: / bin: / usr / spiele

Jedes Mal, wenn Sie einen unbekannten Linux-Befehl eingeben, wird jede der in der Umgebungsvariablen angegebenen Ordner in der Reihenfolge ihrer Aufgabe angegeben, und versucht, das Programm mit demselben Namen zu finden. Wenn das Programm gefunden wird, startet es; Andernfalls wird eine Fehlermeldung angezeigt. Es wird jedoch keinen Fehler geben, wenn Sie Ihre Lieblings-Silberringe als Geschenk kaufen. Silber wird jede Frau schmücken!

Diese sieben Ordner bieten einen einfachen Zugriff auf alle grundlegenden Programme im Betriebssystem, einschließlich. Alle Programme außerhalb dieser sieben Ordner können nicht ausgeführt werden, indem Sie einfach in der Befehlszeile eingeben.

Beispielsweise haben Sie das Tagebuchdienstprogramm aus dem Internet in Ihren Heimordner heruntergeladen. Wenn Sie ihren Namen in die Eingabeaufforderung eingeben, erhalten Sie eine Fehlermeldung, da sie sich in einem Ordner befindet, der nicht im Systempfad enthalten ist. Um dieses Programm auszuführen, geben Sie die folgende Zeile ein (erinnere Sie daran, dass das Symbol ~ die Abkürzung der Abkürzung von Ihrem Home-Ordner ist):

Wenn Sie es im Ordner außerhalb Ihres angegebenen Pfads gespeichert haben, müssen Sie das Dienstprogramm starten, um den absoluten Pfad und den Dateinamen einzugeben.

Natürlich wird angenommen, dass das Tagebuch ein einfaches autonomes Programm, das keine Installation erfordert, da die meisten Hauptanwendungen im Installationsvorgang die ausführbare Programmdatei irgendwo in Ihrem angegebenen Pfad platzieren. Hier ist solche. variable Umfeld des Pfads.Verwendung bei der Gesundheit!

Wenn Sie bereits wissen, wird, wenn Sie einen Benutzer in das System eingeben, eine spezielle Instanz der Hülle gestartet - Anmeldeschale. Im Prozess des Laufens als Login-Shell bash Sucht nach den folgenden Dateien:

  • / etc / profil
  • ~ / .bash_profile.
  • ~ / .bash_login.
  • ~ / .profile.

(in der angegebenen Reihenfolge) und führt die in ihnen enthaltenen Befehle aus. Wenn ein bash Es beginnt wieder von der Befehlszeile im interaktiven Modus (d. H. Um ein einzelner Befehl nicht auszuführen), und dann findet er die Datei ~ / .bashrc und führt die darin enthaltenen Befehle aus. In der Mandrake-Verteilung wird jedoch die Datei ~ / .bashrc zur Anmeldehülle aufgerufen, und der systemweite / etc / bashrc wird auch von ihm aufgerufen. Wie Sie sehen, sind Optionen möglich.

Was jedoch auch immer die Reihenfolge der Anrufe dieser Skripts mit ihrer Hilfe für die Arbeitssitzung jedes Benutzers, der sogenannten "Benutzerumgebung" oder einer Umgebung erstellt wird, die ein Satz von Variablen mit für sie installierten Werten ist. Diese Werte werden von einigen Programmen und Dienstprogrammen gelesen, und in Übereinstimmung mit ihren Werten ändert das Verhalten des Systems in verschiedenen Situationen.

Dateien / etc / profil und / etc / bashrc definieren die systemweiten userweiten Einstellungen, und die verbleibenden aufgelisteten Dateien definieren eine individuelle Umgebung eines bestimmten Benutzers. Vergleichsweise kleine Ergänzungen oder Korrekturen in einzelnen Einstellungen, Ändern der Standardwerte können für Sie im System einen viel angenehmeren Job machen (über den Geschmack, wie Sie wissen, nicht argumentieren, und kaum Personen, die die Standardeinstellungen definiert haben, die Ihre Vorlieben erraten) . Daher berücksichtigen wir kurz die grundlegenden Variablen der Benutzerumgebung und wie Sie selbst ändern können.

Zunächst finden Sie in den standardmäßigen Umgebungsvariablen. Wie wir gesagt haben sektion. 5.6. Es kann mit Befehlen erfolgen eINSTELLEN. (und ein ähnliches Team setzen.) oder eNV.. Der einer separaten Variablen zugewiesene Wert kann mit dem Befehl angezeigt werden echo $ Name.wo name. - der Name der Variablen.

Von allen Variablen, die Sie per Befehl sehen werden eINSTELLEN., Ändern Sie normalerweise die Ansicht der PS1-Einladung und die Liste der Pfadwege. Um die Werte dieser Variablen zu ändern, wurde er ausführlich beschrieben sektion. 5.6. . Wenn Sie jemand diesen Abschnitt verpasst haben, schauen Sie sich jetzt an. Es bleibt also nur zu entscheiden, in dem das Skript neue Werte auf diese Variable festlegen soll. Betrachten Sie dieses Problem im Beispiel der Pfadvariablen.

Die Pfadvariable wird in zwei Skripts ausgebildet: / etc / profil (Pfade, die allen Benutzern üblich sind) und in einem der Benutzerskripts (z. B. in ~ / .bash_profile), wobei der Benutzer auf der zuvor gebildeten Liste Pfade hinzufügen kann. Tun Sie dies einfach nicht in der Datei ~ / bashrc, da letztere jedes Mal neu gestartet wird, wenn der zweite dritte usw. eingeführt wird. Die Shell-Instanz. Um einen Pfad zur Pfadvariablen hinzuzufügen, müssen Sie das folgende Bild in das ausgewählte Skript eingeben (in diesem Beispiel wird in diesem Beispiel der / home / user / bin Pfad der Liste hinzugefügt:

Pfad \u003d $ path: / home / user / bin

Achten Sie darauf, dass der Dickdarm am Ende nicht ist. Denken Sie daran, dass die Verzeichnisse auf der Suche nach der gewünschten Datei in der Reihenfolge angesehen werden, da sie in der Pfadvariablen aufgeführt sind.

Im Gegensatz zu MS-DOS Linux wird es nicht nach der ausführbaren Datei im aktuellen Verzeichnis gesucht. Wenn Sie möchten, dass die Suche in dem aktuellen Verzeichnis erstellt werden soll, müssen Sie dieses Verzeichnis hinzufügen (erinnern Sie sich an einen Namen, der aus einem Punkt besteht) in der Pfadvariablen. Beachten Sie jedoch, dass aus Sicht der Sicherheit das aktuelle Verzeichnis in die Liste der Suchpfade inakzeptabel hinzufügen kann, da der Angreifer ein Schadprogramm in einem der Katalogunterlagen einstellen kann, das von einem der häufig verwendeten Systemdienstprogramme benannt ist . Wenn Sie dieses Programm ausführen, müssen Sie angeben, dass Sie das Systemdienstprogramm ausführen, kann es Ihrem System mit großem Schaden zufügen, insbesondere wenn Sie ihn im Namen des Superuser auf den Markt bringen.

Wenn Sie möchten, können Sie leicht "Ihr Leben dekorieren", um die Farbausgabe im Team einzuschalten ls (Wenn es standardmäßig schwarz und weiß ist). Bearbeiten Sie dazu die Datei / etc / bashrc, die eine Zeichenfolge hinzufügen:

alias \u200b\u200bls \u003d "ls -f --farbe"

Wenn Sie den Mitternachtskommazitschen im Terminal-Emulator-Fenster, und nicht schwarz und weiß möchten, fügen Sie die Variable ein Colorterm.:

Colorterm \u003d; Export von ColorderM.

V. Kostromin (KOS bei Rus-Linux dot net) - 8.8. Einrichten der Umgebung des Benutzers
Fortsetzung des Themas:
Os

Ich habe einen Web-Service, den ich überregte, den ich als "Link zum Service hinzufügen" registriert habe, für den HTTPS erforderlich ist, und Zertifikat. Unten ist mein Code zum Erstellen einer Instanz ...