2011-05-16 18:25:57 +0000 2011-05-16 18:25:57 +0000
347
347

Was sind PATH und andere Umgebungsvariablen, und wie kann ich sie setzen oder verwenden?

Fragen zu

  • Setzen von Umgebungsvariablen
  • die PATH

sind hier sehr häufig, und in den meisten Fällen sind die Antworten einander sehr ähnlich. In Zukunft wäre es schön, dafür ein gutes Q/A zu haben.

Also lautet die Frage: Was sind Umgebungsvariablen, wie die ausführbare Datei PATH, und wie kann ich sie ändern und auf den wichtigsten Betriebssystemen verwenden?

Eine gute Antwort würde eine einfache Erklärung darüber enthalten, was Umgebungsvariablen und insbesondere PATH für das Betriebssystem bedeuten, sowie einfache Richtlinien, wie man sie entsprechend setzt und liest.

Antworten (5)

337
337
337
2011-05-16 18:44:52 +0000

Was sind Umgebungsvariablen?

Umgebungsvariablen enthalten Werte, die sich auf die aktuelle Umgebung beziehen, wie z.B. das Betriebssystem oder Benutzersitzungen.

Pfad

Einer der bekanntesten heißt PATH unter Windows, Linux und Mac OS X. Er gibt die Verzeichnisse an, in denen sich ausführbare Programme* auf dem Rechner befinden, die gestartet werden können, ohne den gesamten Pfad zur Datei zu kennen und auf der Befehlszeile einzugeben. (Oder unter Windows der _Ausführen-Dialog im Startmenü oder

+R).

Unter Linux und Mac OS X enthält er normalerweise alle Verzeichnisse bin und sbin, die für den aktuellen Benutzer relevant sind. Unter Windows enthält es mindestens die Verzeichnisse C:\Windows und C:\Windows\system32 - deshalb können Sie calc.exe oder notepad.exe von der Befehlszeile oder aus dem Ausführen-Dialog heraus _ausführen, aber nicht firefox.exe. (Firefox befindet sich in C:\Program Files\Mozilla Firefox. Informationen darüber, wie Sie Firefox einbinden können, finden Sie hier .)

Wenn Sie z.B. calc (die .exe kann weggelassen werden) in die Befehlszeile unter Windows eingeben, wird der Windows-Rechner gestartet.

* Sie können Unterstützung für andere Dateierweiterungen als .exe hinzufügen, indem Sie %PATHEXT% editieren.

Andere

Andere Variablen könnten Programmen mitteilen, welche Art von Terminal verwendet wird (TERM unter Linux/Mac OS X), oder, unter Windows, wo sich der Windows-Ordner befindet (z.B,

Erstellen neuer Umgebungsvariablen

Unter Windows, Linux und Unix ist es möglich, neue Umgebungsvariablen zu erstellen, deren Werte dann beim Start allen Programmen zur Verfügung gestellt werden.

Sie können dies verwenden, wenn Sie Skripte oder Programme schreiben, die auf mehreren Rechnern installiert oder bereitgestellt werden und auf Werte verweisen müssen, die für diese Rechner spezifisch sind. Während ein ähnlicher Effekt mit programmspezifischen Konfigurationseinstellungen erzielt werden kann, ist es einfacher, dies mit einer Umgebungsvariablen zu tun, wenn mehrere Programme auf denselben Wert zugreifen müssen.

 

Windows

GUI

  1. Öffnen Sie %WINDIR%.

  2. Geben Sie C:\Windows in das Dialogfeld Ausführen (

    +R) ein und klicken Sie auf Control Panel » System » Advanced » Environment Variables. Zum Bearbeiten von Benutzervariablen können Sie auch

eingeben 3. Klicken Sie mit der rechten Maustaste auf (Arbeitsplatz) und klicken Sie auf Eigenschaften, oder drücken Sie einfach

+Unterbrechen.

  1. Es gibt viele andere Möglichkeiten, an die gleiche Stelle zu gelangen, z.B. durch Eingabe von “Umgebungsvariablen” in das Suchfeld Startmenü/Bildschirm usw.

Umgebungsvariablen in Windows sind in benutzer- und maschinen-/systemspezifische Werte unterteilt. Sie können ihre Werte dort anzeigen und bearbeiten. Ihre aktuellen Werte beim Start werden allen Programmen zur Verfügung gestellt.

Es gibt auch Rapid Environment Editor , der das Setzen und Ändern von Umgebungsvariablen in Windows erleichtert, ohne daß man sich in die Systemeinstellungen vertiefen muß. Ein weiteres Open-Source-Programm für Windows, mit dem die Pfadumgebung sehr bequem bearbeitet werden kann, ist Path Editor .

Befehlszeile

Format

Umgebungsvariablen in Windows werden mit Prozentzeichen (%) um den Namen herum gekennzeichnet:

%name%

echo

Um den Wert einer Umgebungsvariablen in control sysdm.cpl,,3 anzuzeigen, geben Sie Environment Variables ein.

C:\>echo %USERPROFILE%
C:\Users\Daniel

setze

Um eine Variable zu erstellen/setzen, verwenden Sie cmd.exe:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

Um eine Variable anzuhängen/hinzufügen, verwenden Sie echo %name%:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

Auf diese Weise gesetzte Umgebungsvariablen sind für (den Rest der) Dauer des Eingabeaufforderungsprozesses, in dem sie gesetzt sind, verfügbar und stehen für Prozesse zur Verfügung, die gestartet werden, nachdem die Variablen gesetzt wurden.

setx

Um eine Variable **permanent zu erstellen/setzen, verwenden Sie set varname=value:

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

Im Gegensatz zu set varname=value;%varname% gibt es kein Gleichheitszeichen und der Wert sollte in Anführungszeichen gesetzt werden, wenn er Leerzeichen enthält. Beachten Sie, dass Variablen zu einer Zeichenfolge mit Leerzeichen expandieren können (z. B. wird setx varname "value" zu set), so dass es am besten ist, Werte, die irgendwelche Variablen enthalten, in Anführungszeichen zu setzen.

Sie müssen %PATH% in Versionen von Windows vor Vista manuell hinzufügen. Windows XP Service Pack 2 Support Tools

Liste der Windows-Umgebungsvariablen

Hier ist eine Liste von Standardumgebungsvariablen , die in Windows eingebaut sind. Einige Beispiele sind:C:\Program Files, setx, %WINDIR%, %SystemRoot% und %USERPROFILE%. Wie die meisten Namen in Windows unterscheiden diese nicht zwischen Groß- und Kleinschreibung.

 

Unix-Derivate (FreeBSD, GNU / Linux, OS X)

Umgebungsvariablen in Linux werden mit einem Dollarzeichen ($) vorangestellt, wie z.B. $HOME oder $HOSTNAME. Viele bekannte und Standardvariablen werden in Großbuchstaben geschrieben, um genau das zu kennzeichnen. Beachten Sie, dass bei Variablennamen Groß- und Kleinschreibung unterschieden wird, was bedeutet, dass $User und $USER aus der Sicht der Shell völlig beziehungslos sind.

Unix-Derivate definieren systemweite Variablen in Shell-Skripten, die sich meistens im Ordner %APPDATA% befinden, aber benutzerspezifische Werte können diesen Variablen in Skripten gegeben werden, die sich im Home-Ordner befinden (z.B. /etc, /etc/profile). Die Datei $HOME/.bash_profile im Home-Ordner ist ein üblicher Ort zur Definition von Benutzervariablen.

Einstellung variables

Diese Dateien sind reguläre Shell-Skripte und können mehr als nur Deklarationen von Umgebungsvariablen enthalten. Um eine Umgebungsvariable zu setzen, verwenden Sie .profile. Um Ihre aktuell definierten Umgebungsvariablen in einem Terminal anzuzeigen, führen Sie export aus.

Der Befehl env ist eine Standardmethode zur Definition von Variablen. Die Syntax ist sehr intuitiv. Das Ergebnis ist für diese beiden Zeilen identisch, aber die erste Alternative ist vorzuziehen, falls eine Portierbarkeit auf eine vor-POSIX Bourne-Shell erforderlich ist.

var=value; export var
export var=value

Die C-Shell und ihre Nachfahren verwenden eine völlig andere Syntax; dort lautet der Befehl export.

Siehe das Linux-Dokumentationsprojekt, Pfad-HOWTO für eine gründlichere Diskussion zu diesem Thema.

Entgegen der landläufigen Meinung ist OS X vielleicht eher “Unix” als Linux. Zusätzlich zu den bereits erwähnten Dateien kann $PATH in diesen Dateien modifiziert werden:

  • setenv enthält alle Standardverzeichnisse, die dem Pfad hinzugefügt werden, wie z.B. /etc/paths und /bin.
  • Jede Datei in /usr/sbin - wird üblicherweise von Installationsprogrammen verwendet, um die von ihnen bereitgestellten ausführbaren Dateien von der Shell aus verfügbar zu machen, ohne systemweite oder benutzerspezifische Konfigurationsdateien zu berühren. Diese Dateien enthalten lediglich einen Pfad pro Zeile. z.B, /Programme/Mozilla/Kalender/bin.

 

Externe Links:

Umgebungsvariablen in XP Windows XP Service Pack 2 Support Tools (enthält /etc/paths.d) Umgebungsvariablen in Windows Vista und Windows 7 Hinzufügen von ausführbaren Dateien zum Ausführen-Dialogfeld Mac OSX-Tipps - Festlegen von Umgebungsvariablen TLDP: Path Howto

64
64
64
2011-05-16 19:03:17 +0000

Dieser Beitrag ist von einem technischeren Standpunkt aus gesehen als der von Daniel, erklärt aber nicht so sehr die Konzepte.


Der Wikipedia-Artikel ist auch eine ausgezeichnete Referenz.

Linux und die meisten BSDs

In den meisten Kommandozeilen-Shells werden temporäre Umgebungsvariablen mit den Befehlen export (sh, bash, zsh) oder setenv (csh, tcsh) gesetzt.

  • Beispiele für das Voranstellen von $HOME/bin bis $PATH in der Bash oder zsh:

  • csh, tcsh:

Persistente Umgebungsvariablen können in mehreren getrennten Stufen gesetzt werden:

  • Anmeldung:

  • Öffnen eines Terminalfensters:

Windows NT-Serie

  • In der Eingabeaufforderung (cmd.exe) verwenden Sie set name=value, um die Umgebungsvariablen für dieses Fenster zu ändern.

  • Um persistente Änderungen vorzunehmen, verwenden Sie Systemsteuerung → System → Erweiterte → Umgebungsvariablen. docs )

  • Systemweite Umgebungsvariablen werden in der Registry, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, gehalten und beim Systemstart geladen.

  • Standardmäßig sucht das System auch nach set-Befehlen in der Datei AUTOEXEC.NT.

MS-DOS, 16-Bit-Windows, Windows 9x-Serie

  • In der MS-DOS-Eingabeaufforderung (command.com) verwenden Sie set name=value, wie in WinNT.

  • Um dauerhafte Änderungen vorzunehmen, fügen Sie die entsprechenden set-Zeilen in C:\AUTOEXEC.BAT hinzu oder bearbeiten Sie sie, und starten Sie dann neu.

VMS

(Konnte nicht widerstehen.)

DCL hat kein Konzept des “Pfades”, aber verschiedene Symbol- und Befehlsdefinitionen können in SYS$LOGIN:LOGIN.COM eingefügt werden.

9
9
9
2014-01-15 17:49:57 +0000

Für die globalen (nicht-terminalen) Umgebungsvariablen bash der Shell PATH befolge ich die Konvention, die in meiner Ubuntu-VM-Installation verwendet wird - andere Shells variieren:

Caveat: Die gesamte Shell-Startsequenz, welche Dateien .bashrc, .profile usw. in welcher Reihenfolge bezogen werden, wann muss ich mich neu anmelden, um die Sichtbarkeit neu definierter Variablen, Aliase usw. zu erhalten? was ist der Unterschied zwischen einer eingeloggten, interaktiven und nicht-interaktiven Shell - ich benutze cron? und warum wird meine dumme . ~/.bashrc-Variable bei einer PATH immer länger? sind die Schlüsselfragen, die mir in den Sinn kommen, wenn ich an meine PATH-Variable denke.

_ Tatsächlich habe ich gerade mein gesamtes Bash-Startup-Dateiset komplett neu geschrieben, wobei ich Ideen aus den Ubuntu- und Cygwin-Skelettdateien übernommen habe, und hier sind einige meiner In-Sites:_

  1. Exportieren Sie die Variablen PATH und andere globale Umgebungsvariablen (d.h. LD_LIBRARY_PATH) in der .profile;
  2. Verwenden Sie die Logik in ~/.profile, um $HOME/.bashrc zu beschaffen, falls sie existiert;
  3. Sperren Sie die Ausführung von ~/.bashrc mit einem Test für die interaktive Ausführung ein, beenden Sie sie andernfalls;
  4. Setzen Sie alle Aliase, shopt, Prompt-Setup, Verlaufskontrolle, Terminal-Setup, Funktionsdefinition usw. (interaktives verwandtes Setup) in den Teil von ~/.bashrc, der so geschützt ist, dass er nur im interaktiven Modus läuft;
  5. die anderen Bash-Startdateien loswerden, denn ihre Existenz bestimmt, ob der Kontrollpfad durch .profile und .bashrc wie erwartet funktioniert. Wenn ich an der Bash-Eingabeaufforderung stehe und ein Standard-Setup aktualisieren muss, editiere ich meine ~/.bash_profile-Datei und quelle sie dann einfach mit ~/.bash_login, um diese Änderungen in meine aktuelle Shell zu bekommen.
  6. wenn ich eine Änderung an einer Umgebungsvariablen wie ~/.bashrc vornehme, muss ich meine . ~/.bashrc modifizieren und quellcen;
  7. ich meine Aufrufe an fink, port und braue spezifische Setups in PATH.

Das sind meine 2 Cents zu diesem Thema.

8
8
8
2014-07-25 09:57:28 +0000

Q: WAS sind Umgebungsvariablen ?

A: Umgebungsvariablen sind ähnlich wie Variablen in jeder Programmiersprache. Im Falle von Windows- oder Unix-Systemen speichern sie verschiedene Werte, um Programmen und Aufgaben zu ermöglichen, notwendige Informationen über das Betriebssystem oder die ‘Umgebung’ zu erhalten. Zum Beispiel:

USERPROFILE : Benutzerverzeichnis innerhalb der Betriebssystemdateien.

MAIL : wo die Post eines Benutzers innerhalb der Betriebssystemdateien zu finden ist.

Q: WAS ist die PATH-Variable speziell?

A: Die PATH-Variable legt Verzeichnispfade fest, in denen gesucht wird, wenn Befehle ausgeführt werden, sowohl für RUN-Befehle als auch für interne Aufrufe von Programmen. Dadurch wird verhindert, dass ein Programm seinen Installationsort kennen muss, um andere ausführbare Prozesse aufzurufen…

Sie schaut auf die Windows Environment System PATH-Variable und testet jeden Ort für die gegebene ausführbare Datei. Durch das Hinzufügen eines Speicherortes zur PATH-Variablen kann also eine ausführbare Datei direkt aufgerufen werden.

Demnach Wikipedia-Artikel :

Wenn ein Befehl in einer Befehlsshell eingegeben oder ein Systemaufruf durch ein Programm zur Ausführung eines Programms durchgeführt wird, durchsucht das System zunächst das aktuelle Arbeitsverzeichnis und dann den Pfad, wobei es jedes Verzeichnis von links nach rechts untersucht


*Q: WIE fügt man einen Speicherort zur PATH-Variablen hinzu ? *

A: Sie müssen die variable Zeichenfolge der Umgebungsvariablen PATH-Variable bearbeiten, um den Speicherort Ihrer ausführbaren Datei einzuschließen.

Eine Möglichkeit, dies zu tun, ist hier beschrieben:

  1. Öffnen Sie das Startmenü und klicken Sie mit der rechten Maustaste auf Computer. Wählen Sie Eigenschaften.
  2. Wählen Sie Erweiterte Systemeinstellungen.
  3. Wählen Sie auf der Registerkarte Erweitert die Option Umgebungsvariablen.
  4. Wählen Sie BEARBEITEN oder NEU. (für PFAD, den Sie höchstwahrscheinlich BEARBEITEN möchten)
  5. fügen Sie Ihren Ortspfad hinzu. z.B.: C:\wamp\bin\php\php5.5.12;

Ich hoffe, dies klärt einige der Verwirrungen.

0
0
0
2020-02-26 10:20:48 +0000