Was sind PATH- und andere Umgebungsvariablen und wie kann ich sie festlegen oder verwenden?

341

Fragen über

  • Umgebungsvariablen setzen
  • das PATH

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

Die Frage ist also: Was sind Umgebungsvariablen, wie die ausführbare Datei PATH, und wie kann ich sie auf wichtigen Betriebssystemen ändern und verwenden?

Eine gute Antwort wäre eine einfache Erklärung dessen, was Umgebungsvariablen und insbesondere PATHfür das Betriebssystem bedeuten, sowie einfache Richtlinien, wie sie entsprechend eingestellt und gelesen werden.

slhck
quelle
2
Müde von der Notwendigkeit, es jedes Mal manuell zu tun, schrieb ich einige Registrierungseinträge, um Kontextmenüeinträge für AddToPath und RemoveFromPath zu Ordnern hinzuzufügen, unter Verwendung einer kostenlosen App namens pathed.exe. Im Folgenden finden Sie den Link zum vollständigen Handbuch: addictivetips.com/windows-tips/… Ich kann jetzt ganz einfach Ordner zu PATH-Variablen hinzufügen oder daraus entfernen, ohne dass Sie eine Datei bearbeiten oder die Formatierung der Variablen durcheinander bringen müssen . Ich hoffe es hilft. =)
Haroon Q. Raja
1
Unter Windows gibt es eine Verknüpfung zum Öffnen der Eigenschaften von System, dh. Systemsteuerung -> System Es ist die WIN-Taste auf der Tastatur + Pause / Pause (WIN + Pause). Dies ist äußerst hilfreich und beschleunigt das Festlegen neuer Umgebungsvariablen unter Win8, da Sie in der modernen Benutzeroberfläche durch mehrere Fenster klicken müssen (Ja. Wenn es modern ist, züchte ich einen Kaktus auf meiner Handfläche), was nur ärgerlich ist. D: Natürlich können Sie Powershell - Skript oder verwenden setx Befehl und keine Sorge mehr davon schaffen
termil0r
In Windows 8 erfolgt die Navigation zum Ändern von System- und Benutzerumgebungsvariablen am schnellsten über die Suche. <kbd> Win </ kbd> + <kbd> W </ kbd> ruft die Suche nach allen Einstellungen auf. Suchen nach envund die benötigten Optionen werden aufgelistet.
FRIdSUN
Ich denke, es ist schneller und klarer, wenn man öffnet CMDund tippt setoder PowerShelltippt Get-Childitem env:.
Paradroid
Wenn Sie die Pfadvariable häufig bearbeiten (z. B. beim Einrichten eines neuen Systems), kann es hilfreich sein, eine Verknüpfung zum Dialogfeld Systemeigenschaften auf dem Desktop zu haben. Klicken Sie dazu mit der rechten Maustaste auf den Desktop, wählen Sie Neue Verknüpfung und geben Sie systempropertiesadvanced.exe ein. Klicken Sie anschließend auf den Link, um zum Dialogfeld Systemeigenschaften zu gelangen. Klicken Sie anschließend auf Umgebungsvariablen, um zum Dialogfeld mit den Pfadeinstellungen zu gelangen.
Brian Burns

Antworten:

334

Was sind Umgebungsvariablen?

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

Pfad

Eine der bekanntesten heißt PATHWindows, Linux und Mac OS X. Sie gibt die Verzeichnisse an, in denen sich ausführbare Programme * auf dem Computer befinden, die gestartet werden können, ohne den gesamten Pfad zur Datei in der Befehlszeile zu kennen und einzugeben . (Oder unter Windows das Dialogfeld Ausführen im Startmenü oder Win+ R).

Unter Linux und Mac OS X enthält es normalerweise alle binund sbinVerzeichnisse, die für den aktuellen Benutzer relevant sind. Unter Windows enthält es zumindest die C:\Windowsund C:\Windows\system32Verzeichnisse - das ist , warum Sie können laufen calc.exe oder notepad.exedie Befehlszeile aus oder Ausführen - Dialog, aber nicht firefox.exe. (Firefox befindet sich in C:\Program Files\Mozilla Firefox. Informationen zum Einbinden von Firefox finden Sie hier .)

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

* Sie können Unterstützung für andere Dateierweiterungen als .exedurch Bearbeiten hinzufügen %PATHEXT%.

Andere

Andere Variablen können Programmen mitteilen, welche Art von Terminal verwendet wird ( TERMunter Linux / Mac OS X) oder unter Windows, wo sich der Windows-Ordner befindet (z . B. %WINDIR%befindet C:\Windows).

Neue Umgebungsvariablen erstellen

Unter Windows, Linux und Unix können neue Umgebungsvariablen erstellt werden, deren Werte beim Start allen Programmen zur Verfügung gestellt werden.

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

 

Windows

GUI

  1. Öffnen Control Panel » System » Advanced » Environment Variables.

  2. Geben Sie control sysdm.cpl,,3im Dialogfeld Ausführen ( Win+ R) und klicken Sie auf Environment Variables.
    Zum Bearbeiten von Benutzervariablen können Sie auch eingeben

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    im Dialogfeld "Ausführen".

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

    • In XP klicken Sie auf Advanced » Environment Variables.
    • In Vista + klicken Sie auf Advanced system settings » Environment Variables.
  4. Es gibt viele andere Möglichkeiten, den gleichen Ort zu erreichen, z. B. indem Sie "Umgebungsvariablen" in das Suchfeld Startmenü / Bildschirm eingeben und so weiter.

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

Es gibt auch den Rapid Environment Editor , mit dem Umgebungsvariablen in Windows festgelegt und geändert werden können, ohne dass die Systemeinstellungen eingehend untersucht werden müssen. Ein weiteres Open-Source-Programm für Windows, mit dem die Pfadumgebung sehr komfortabel bearbeitet werden kann, ist Path Editor .

Befehlszeile

Format

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

%name%

Echo

Um eine Umgebungsvariable des Wert in angezeigt wird cmd.exe, geben echo %name%.

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

einstellen

Verwenden Sie zum Erstellen / Festlegen einer Variablen Folgendes set varname=value:

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

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

Verwenden Sie zum Anhängen / Hinzufügen einer Variablen Folgendes set varname=value;%varname%:

C:\>set Penguins=C:\Linux

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

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

Auf diese Weise festgelegte Umgebungsvariablen stehen (für den Rest) der Dauer des Eingabeaufforderungsprozesses zur Verfügung, in dem sie festgelegt wurden, und stehen Prozessen zur Verfügung, die nach dem Festlegen der Variablen gestartet wurden.

setx

Um eine Variable dauerhaft zu erstellen / festzulegen , verwenden Sie :setx 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 dazu setgibt es kein Gleichheitszeichen und der Wert sollte in Anführungszeichen eingeschlossen werden, wenn er Leerzeichen enthält. Beachten Sie, dass Variablen mit Leerzeichen in einen String erweitern kann (zB %PATH%wird C:\Program Files), so ist es am besten in Anführungszeichen Werte enthalten , die alle Variablen enthalten.

Sie müssen setxWindows-Versionen vor Vista manuell hinzufügen .
Windows XP Service Pack 2-Supporttools

Liste der Windows-Umgebungsvariablen

Hier ist eine Liste der Standardumgebungsvariablen , die in Windows integriert sind. Einige Beispiele sind: %WINDIR%, %SystemRoot%, %USERPROFILE%, und %APPDATA%. Wie die meisten Namen in Windows wird bei diesen Angaben die Groß- und Kleinschreibung nicht berücksichtigt.

 

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

Umgebungsvariablen in Linux wird ein Dollarzeichen ($) vorangestellt, z. B. $ HOME oder $ HOSTNAME. Viele bekannte und Standardvariablen werden in Großbuchstaben geschrieben, um genau das zu bezeichnen. Beachten Sie, dass bei Variablennamen zwischen Groß- und Kleinschreibung unterschieden wird. Dies bedeutet, dass $ User und $ USER aus Sicht der Shell keinerlei Beziehung zueinander haben.

Unix - Derivate definieren systemweite Variablen in Shell - Skripten befindet meist im /etcOrdner, aber benutzerspezifischen Werte können im Home - Ordner (zB befindet sich auf diese Variablen in Skripten gegeben werden /etc/profile, $HOME/.bash_profile). In der .profileDatei im Basisordner werden häufig Benutzervariablen definiert.

Variablen setzen

Diese Dateien sind reguläre Shell-Skripte und können mehr als nur Deklarationen von Umgebungsvariablen enthalten. Verwenden Sie zum Festlegen einer Umgebungsvariablen export. Führen Sie Folgendes aus, um Ihre derzeit definierten Umgebungsvariablen in einem Terminal anzuzeigen env.

Der exportBefehl ist eine Standardmethode zum Definieren von Variablen. Die Syntax ist sehr intuitiv. Das Ergebnis ist für diese beiden Zeilen identisch, die erste Alternative ist jedoch vorzuziehen, wenn eine Portabilität zur Bourne-Shell vor POSIX erforderlich ist.

var=value; export var
export var=value

Die C-Shell und ihre Nachkommen verwenden eine völlig andere Syntax. dort ist der Befehl setenv.

Weitere Informationen zu diesem Thema finden Sie im Linux-Dokumentationsprojekt Path HOWTO .

Vielleicht ist OS X anders als allgemein angenommen "Unix" als Linux. Zusätzlich zu den bereits erwähnten Dateien kann $ PATH in diesen Dateien geändert werden:

  • /etc/pathsenthält alle Standardverzeichnisse, die dem Pfad hinzugefügt wurden, wie /binund /usr/sbin.
  • Alle /etc/paths.deingehenden Dateien - werden häufig von Installationsprogrammen verwendet, um die von ihnen bereitgestellten ausführbaren Dateien in der Shell verfügbar zu machen, ohne systemweite oder benutzerspezifische Konfigurationsdateien zu berühren. Diese Dateien enthalten lediglich einen Pfad pro Zeile. zB / Programme / Mozilla / Kalender / bin.

 

Externe Links:

Umgebungsvariablen in XP
Windows XP Service Pack 2-Supporttools (einschließlich setx)
Umgebungsvariablen in Windows Vista und Windows 7
Hinzufügen von ausführbaren Dateien zum Dialogfeld "Ausführen"
Mac OSX-Tipps - Festlegen von Umgebungsvariablen
TLDP: Pfad-Howto

Daniel Beck
quelle
10
Ab Windows Vista können Sie SETXdauerhafte Änderungen vornehmen. Es hat eine etwas andere Syntax. SETXmuss von der Windows Server 2003 Resource Kitfür frühere Versionen von hinzugefügt werden NT.
Paradroid
1
@paradroid Nizza, wusste das nicht (kein Windows-Benutzer). Bei diesem Thema handelt es sich um Community-Wiki. Sie können die Informationen einfach bearbeiten.
Daniel Beck
2
@JdeBP Der Abschnittstitel sollte verweisen, wie diese Werte auf der Benutzeroberfläche festgelegt werden , die unter Windows als Shell bezeichnet wird , im Gegensatz zu dem folgenden Abschnitt, Befehlszeilenschnittstelle . Ich habe das bearbeitet, bevor ich deinen Kommentar vor 10 Stunden gesehen habe. Niemand hat jemals erwähnt, dass dies nur für den Explorer gilt.
Daniel Beck
1
@JdeBP Die Antwort, auf die Sie verlinkt haben, trifft in diesem Fall nicht wirklich zu, da Sie über das Festlegen der Werte in der Registrierung gesprochen haben. Die Einstellung per Dialog wird, wie WM_SETTINGCHANGEich es mir vorstelle, ausgestrahlt und daher Interessenten über die neuen Werte informiert. Deshalb habe ich gefragt, wie es hier zutrifft. Etwas fett zu machen ändert nichts an seiner Bedeutung und macht es auch nicht einfacher zu verstehen, genau wie den gleichen Satz zu wiederholen, nur lauter. Außerdem habe ich diesen Beitrag vor einigen Stunden bearbeitet, um speziell zu erwähnen, dass die Werte, die die Prozesse erhalten, beim Starten festgelegt werden.
Daniel Beck
3
@JdeBP Möglicherweise stellen Sie auch fest, dass die Frage eher grundlegender Natur ist. WM_SETTINGCHANGEEs ist möglicherweise keine gute Idee, die Komplexität der Verteilung von Änderungen an Umgebungsvariablen sorgfältig zu erklären (im Ernst, Windows-API? Dies ist nicht die Zielgruppe dieser Frage!), Da dies den Leser verwirren kann, anstatt zu erklären, worum es sich bei diesen Variablen handelt .
Daniel Beck
64

Dieser Beitrag ist aus technischer Sicht als Daniels, erklärt aber nicht so sehr die Konzepte.


Der Wikipedia-Artikel ist auch eine ausgezeichnete Referenz.

Linux und die meisten BSDs

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

  • Beispiele für das Voranstellen $HOME/binzu $PATHin bash oder zsh:

    export PATH="$HOME/bin:$PATH"
    

    (In diesem speziellen Fall exportist es unnötig, da PATHes bereits Teil der Umgebung ist.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Persistente Umgebungsvariablen können in mehreren separaten Phasen festgelegt werden:

  • Einloggen:

    • Einrichten der Anmeldesitzung: Linux pam_env, von dem normalerweise gelesen wird/etc/environment

    • Terminal-Logins: Die "Profil" -Dateien der Shell.

      • bashverwendet /etc/profileund die erste von: ~/.bash_profile, ~/.bash_login, ~/.profile. Handbuch Seite bash(1)Abschnitt Invocation .

        Häufig enthält die Profildatei des Benutzers auch einen expliziten Aufruf ~/.bashrc.

      • zsh: Manpage- zsh(1)Abschnitt Startup / Shutdown-Dateien .

      • csh und andere Shells: Siehe entsprechende Handbuchseiten.

    • Grafische Anmeldungen: Nicht sicher; kann je nach Login-Manager variieren. GDM scheint ~/.profilemein System einzulesen .

  • Öffnen eines Terminalfensters:

    • bashverwendet /etc/bash.bashrcund ~/.bashrc.

Windows NT-Serie

  • cmd.exeVerwenden Sie set name=valuein der Eingabeaufforderung ( ), um Umgebungsvariablen für dieses Fenster zu ändern.

    Anhängen c:\binzu %PATH%verwenden:

    set path=%path%;c:\bin
    

    Dies betrifft nur diesen cmd.exeProzess und alle neuen Prozesse, die von diesem Prozess gestartet werden.

  • Um dauerhafte Änderungen vorzunehmen, verwenden Sie Systemsteuerung → System → Erweitert → Umgebungsvariablen . ( docs )

    Hinweis: Während Benutzereinstellungen normalerweise die Systemeinstellungen überschreiben, wird die PATHVariable speziell behandelt: Sowohl die System- als auch die Benutzereinstellungen werden zum endgültigen Wert zusammengeführt.

    Änderungen werden in der Registrierung gespeichert (siehe unten) und sofort auf alle neuen Prozesse angewendet, die vom Explorer (der grafischen Shell) erstellt wurden, z. B. über das Startmenü.

  • Systemweite Umgebungsvariablen werden in der Registrierung gespeichert HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentund beim Systemstart geladen.

    Die Benutzerumgebung wird HKCU\Environmentwährend der Benutzeranmeldung beibehalten und geladen.

  • Standardmäßig sucht das System auch nach setBefehlen in der AUTOEXEC.NTDatei.

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

  • command.comVerwenden Sie in MS-DOS Prompt ( ) set name=valuewie in WinNT.

    Ebenso setwirkt sich die interaktive Ausführung nur auf diese eine command.comInstanz sowie auf alle neuen Prozesse aus, die von ihr gestartet wurden.

  • Um dauerhafte Änderungen vorzunehmen, fügen Sie entsprechende setZeilen hinzu oder bearbeiten Sie sie. Starten Sie C:\AUTOEXEC.BATanschließend den Computer neu.

    • Problemumgehung zur Vermeidung eines Neustarts unter Windows 9x: Öffnen Sie ein MS-DOS-Eingabeaufforderungsfenster, legen Sie die entsprechenden Variablen fest, schließen Sie den vorhandenen Explorer-Prozess ( Start → Herunterfahren → bei gedrückter Strg- und Umschalttaste, klicken Sie auf Abbrechen ) und führen Sie ihn explorer.exeüber das MS-DOS-Eingabeaufforderungsfenster aus .

VMS

(Konnte nicht widerstehen.)

DCL kennt kein "Pfad" -Konzept, es können jedoch verschiedene Symbol- und Befehlsdefinitionen eingegeben werden SYS$LOGIN:LOGIN.COM.

Grawity
quelle
2
Der VMS-Abschnitt ist falsch. DCL hat DCL$PATHfür " automatische Fremdbefehle ".
JdeBP
9

Für die globalen (nicht terminalen) Umgebungsvariablen der bashShell PATHbefolge ich die in meiner Ubuntu VM-Installation verwendete Konvention - andere Shells variieren:

Caveat: Die gesamte Shell-Startsequenz, die .bashrc, .profileetc. Dateien in welcher Reihenfolge bezogen werden ?, wann muss ich jetzt wieder anmelden Sichtbarkeit zu erhalten , neu definiert Variablen, Aliase, etc ?, was ist der Unterschied zwischen einem Login , interaktive und nicht interaktive Shell - ich verwende cron? und warum . ~/.bashrcwird meine dumme PATHVariable bei der Ausführung von a immer länger? sind die Schlüsselfragen, die mir einfallen, wenn ich an meine PATHVariable denke .

Tatsächlich habe ich gerade mein gesamtes Bash-Startup-Dateiset komplett neu geschrieben und dabei Ideen aus den Ubuntu- und Cygwin-Skelettdateien übernommen. Hier sind einige meiner in-Sites:

  1. Exportieren Sie die PATHund andere globale Umgebungsvariablen (dh LD_LIBRARY_PATH) Variablen im .profile;
  2. Verwenden Sie logische ~/.profileQuellen, $HOME/.bashrcfalls vorhanden.
  3. Zaun Ausführung ~/.bashrcmit einem Test für die interaktive Ausführung, sonst beenden;
  4. Fügen Sie alle Aliase, shoptEingabeaufforderungen, Verlaufskontrollen, Terminaleinstellungen, Funktionsdefinitionen usw. (interaktive Einstellungen) in den Teil ein, der ~/.bashrcnur im interaktiven Modus ausgeführt werden darf.
  5. Befreien Sie sich von den anderen Bash-Startdateien, da deren Existenz bestimmt, ob der Steuerpfad durchläuft .profileund .bashrcwie erwartet funktioniert. Das heißt, wenn keine besonderen Anforderungen bestehen, entfernen Sie ~/.bash_profile& ~/.bash_login;
  6. Wenn ich an der Bash-Eingabeaufforderung bin und einige Standardeinstellungen aktualisieren muss, bearbeite ich meine ~/.bashrcDatei und versorge sie einfach mit einem . ~/.bashrc, um diese Änderungen in meiner aktuellen Shell abzurufen.
  7. Wenn ich eine Umgebungsvariable wie ändere PATH, muss ich meine ändern und als Quelle angeben ~/.profile.
  8. Ich rufe an, um bestimmte Setups zu finken, zu portieren und zu brauen .profile.

Das sind meine 2 Cent zu diesem Thema.

Billy McCloskey
quelle
7

F: WAS sind Umgebungsvariablen?

A: Umgebungsvariablen ähneln Variablen in jeder Programmiersprache. Bei Windows- oder Unix-Systemen werden verschiedene Werte gespeichert, damit Programme und Aufgaben die erforderlichen Informationen zum Betriebssystem oder zur Umgebung abrufen können. Zum Beispiel:

USERPROFILE: Benutzerverzeichnis innerhalb der Betriebssystemdateien.

MAIL: Hier finden Sie die E-Mails eines Benutzers in den Betriebssystemdateien.

F: WAS ist die PATH-Variable speziell?

A: Die Variable PATH legt Verzeichnispfade fest, in denen nach der Ausführung von Befehlen gesucht wird, sowohl für RUN-Befehle als auch für interne Aufrufe von Programmen. Dies verhindert, dass ein Programm seinen Installationsort kennen muss, um andere ausführbare Prozesse aufzurufen.

Es überprüft die Windows-Umgebungsvariable PATH und testet jeden Speicherort für die angegebene ausführbare Datei. Durch Hinzufügen eines Speicherorts zur PATH-Variablen kann eine ausführbare Datei direkt aufgerufen werden.

Laut diesem Wikipedia-Artikel :

Wenn ein Befehl in eine Befehls-Shell eingegeben wird oder ein Programm einen Systemaufruf ausführt, durchsucht das System zuerst das aktuelle Arbeitsverzeichnis und anschließend den Pfad, wobei jedes Verzeichnis von links nach rechts überprüft wird


F: WIE füge ich der PATH-Variablen eine Position hinzu?

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

Eine Möglichkeit, dies zu tun, wird 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 aus.
  4. Wählen Sie BEARBEITEN oder NEU. (für PATH möchten Sie höchstwahrscheinlich EDITIEREN).
  5. Fügen Sie Ihren Standortpfad hinzu. z.B:C:\wamp\bin\php\php5.5.12;

Ich hoffe, dies klärt einiges an Verwirrung.

user945389
quelle