Frage Was sind PATH und andere Umgebungsvariablen und wie kann ich sie einstellen oder verwenden?


Fragen über

  • Umgebungsvariablen setzen
  • das PATH

sind hier sehr häufig, und in den meisten Fällen sind die Antworten 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 PATHund wie kann ich sie auf den wichtigsten Betriebssystemen ändern und verwenden?

Eine gute Antwort wäre eine einfache Erklärung der Umgebungsvariablen und besonders PATH bedeuten für das Betriebssystem, sowie einfache Richtlinien, wie Sie sie entsprechend einstellen und lesen.


316
2018-05-16 18:25


Ursprung


Müde, es jedes Mal manuell tun zu müssen, schrieb ich einige Registrierungseinträge, um Kontextmenüeinträge für AddToPath und RemoveFromPath in Ordner einzufü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 sehr einfach Ordner zur PATH-Variablen hinzufügen oder sie daraus entfernen, ohne eine Datei bearbeiten zu müssen oder mich darum kümmern zu müssen, die Formatierung der Variablen zu stören. Ich hoffe es hilft. =) - Haroon Q. Raja
Unter Windows gibt es eine Verknüpfung zum Öffnen von Eigenschaften von System, dh. Systemsteuerung -> System Es ist WIN-Taste auf der Tastatur + Pause / Pause (WIN + Pause). Dies ist extrem hilfreich und beschleunigt den Prozess der Einstellung neuer Umgebungsvariablen auf Win8, da man durch mehrere Fenster im modernen UI klicken muss (Ja. Wenn es modern ist, dann werde ich einen Kaktus auf meiner Handfläche wachsen lassen), was einfach nervt. Natürlich können Sie ein Powershell-Skript erstellen oder den setx-Befehl verwenden und sich nicht weiter darum kümmern: D - termil0r
In Windows 8 ist die schnellste Navigation zum Ändern von System- und Benutzerumgebungsvariablen die Suche. <kbd> Win </ kbd> + <kbd> W </ kbd> ruft die Suche nach allen Einstellungen auf. Suchen nach envund die benötigten Optionen sind aufgelistet. - FRIdSUN
Ich denke, es ist schneller und klarer beim Öffnen CMD und tippen set, oder PowerShell und tippen Get-Childitem env:. - paradroid
Wenn Sie die Pfadvariable sehr oft bearbeiten (wie 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. Dann können Sie auf den Link klicken, um zum Dialogfeld Systemeigenschaften zu gelangen, und dann auf Umgebungsvariablen klicken, um zum Dialogfeld mit den Pfadeinstellungen zu gelangen. - Brian Burns


Antworten:


Was sind Umgebungsvariablen?

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

Pfad

Einer der bekanntesten wird genannt PATH unter Windows, Linux und Mac OS X. Es 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 in der Befehlszeile zu kennen und einzugeben. (Oder in Windows, der Lauf Dialog im Startmenü oder Win+R).

Unter Linux und Mac OS X ist normalerweise alles enthalten bin und sbin Verzeichnisse, die für den aktuellen Benutzer relevant sind. Unter Windows enthält es mindestens die C:\Windows und C:\Windows\system32 Verzeichnisse - deshalb können Sie Lauf  calc.exe oder notepad.exe von der Befehlszeile oder Lauf Dialog, aber nicht firefox.exe. (Firefox befindet sich in C:\Program Files\Mozilla Firefox. Um zu erfahren, wie man Firefox einbezieht, gehen Sie Hier.)

Zum Beispiel tippen calc (das .exe  kann weggelassen werden) in der Befehlszeile unter Windows startet der Windows Rechner.

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

Andere

Andere Variablen können den 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. %WINDIR% ist C:\Windows).

Erstellen neuer Umgebungsvariablen

Unter Windows, Linux und Unix ist es möglich, neue Umgebungsvariablen zu erstellen, deren Werte nach dem Start für alle Programme verfügbar gemacht werden.

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

Windows

GUI

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

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

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

    im Dialogfeld Ausführen.

  3. Rechtsklicken Sie auf (Mein) Computer und klicken Sie auf Eigenschaften, oder drücken Sie einfach Win+Unterbrechung.

    • 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. durch Eingabe von "Umgebungsvariablen" im Startmenü / Bildschirmsuchfeld und so weiter.

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

Es gibt auch Schnelle Umgebungseditor, mit dem Sie Umgebungsvariablen in Windows einstellen und ändern können, ohne tief in die Systemeinstellungen eindringen zu müssen. Ein weiteres Open-Source-Programm für Windows, mit dem die Pfadumgebung sehr komfortabel bearbeitet werden kann, ist Pfad-Editor.

Befehlszeile

Format

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

%name%

Echo

Um den Wert einer Umgebungsvariablen in anzuzeigen cmd.exe, Art echo %name%.

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

einstellen

Zu erstellen / setzen eine Variable, verwenden set varname=value:

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

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

Zu anhängen / hinzufügen eine Variable, verwenden 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 von) zur Verfügung. die Dauer des Eingabeaufforderungsprozesses, in dem sie festgelegt sind, und stehen für Prozesse zur Verfügung, die nach dem Setzen der Variablen gestartet werden.

setx

Zu erstellen / setzen eine Variable permanent, benutzen 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

nicht wie set, es gibt kein Gleichheitszeichen und der Wert sollte in Anführungszeichen eingeschlossen werden, wenn er Leerzeichen enthält. Beachten Sie, dass Variablen zu einer Zeichenfolge mit Leerzeichen erweitert werden können (z. B. %PATH% wird C:\Program Files), daher empfiehlt es sich, Anführungszeichen um Werte einzufügen, die beliebige Variablen enthalten.

Sie müssen manuell hinzufügen setx zu Windows-Versionen früher als Vista.
Windows XP Service Pack 2-Supporttools

Liste der Windows-Umgebungsvariablen

Hier ist eine Liste von Standard-Umgebungsvariablen, die in Windows eingebaut sind. Einige Beispiele sind: %WINDIR%, %SystemRoot%, %USERPROFILE%, und %APPDATA%. Wie bei den meisten Windows-Namen wird auch hier nicht zwischen Groß- und Kleinschreibung unterschieden.

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

Umgebungsvariablen in Linux haben ein vorangestelltes Dollarzeichen ($) wie $ HOME oder $ HOSTNAME. Viele bekannte und Standardvariablen sind in Großbuchstaben buchstabiert, um genau das zu verdeutlichen. Beachten Sie, dass bei Variablennamen die Groß- / Kleinschreibung beachtet wird, dh dass $ User und $ USER aus der Sicht der Shell völlig unabhängig sind.

Unix-Derivate definieren systemweite Variablen in Shell-Skripten, die hauptsächlich in der /etc Ordner, aber benutzerspezifische Werte können diesen Variablen in Skripten gegeben werden, die sich in dem Benutzerordner befinden (z. B. /etc/profile, $HOME/.bash_profile). Das .profile Datei im Home-Ordner ist ein üblicher Ort, um Benutzervariablen zu definieren.

Variablen setzen

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

Das export Befehl ist eine Standardmethode zum Definieren von Variablen. Die Syntax ist sehr intuitiv. Das Ergebnis ist für diese beiden Zeilen identisch, aber die erste Alternative ist vorzuziehen, wenn eine Portabilität zu einer BUS-Shell vor POSIX erforderlich ist.

var=value; export var
export var=value

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

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

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

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

Externe Links:

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


309
2018-05-16 18:44



Ab Windows Vista können Sie verwenden SETX um dauerhafte Änderungen vorzunehmen. Es hat eine etwas andere Syntax. SETX muss aus dem hinzugefügt werden Windows Server 2003 Resource Kit für frühere Versionen von NT. - paradroid
@paradroid Nizza, wusste das nicht (kein Windows-Benutzer). Dieses Thema ist Community-Wiki, Sie können weitermachen und nur diese Informationen bearbeiten. - Daniel Beck♦
@JdeBP Der Titel der Sektion sollte als Referenz dienen Wie legt man diese Werte auf der Benutzeroberfläche fest?, Was heisst Schale auf Windows, 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 Explorer gilt. - Daniel Beck♦
@ JdeBP Die Antwort, die Sie verknüpft haben, trifft in diesem Fall nicht wirklich zu, da Sie über das Festlegen der Werte in der Registrierung gesprochen haben. Die Einstellung über den Dialog überträgt das WM_SETTINGCHANGE Ich stelle mir vor und informiere Interessierte über die neuen Werte. Deshalb habe ich gefragt, wie es hier gelte. Etwas Fettes zu machen ändert nichts an seiner Bedeutung und macht es auch nicht leichter zu verstehen, genauso wie den gleichen Satz zu wiederholen, nur lauter. Außerdem habe ich diesen Beitrag vor ein paar Stunden bearbeitet, um speziell zu erwähnen, dass die Werte, die die Prozesse erhalten, beim Start gesetzt werden. - Daniel Beck♦
@ JdeBP Sie könnten auch feststellen, dass die Frage eher grundlegender Natur ist. Erklären Sie sorgfältig die Feinheiten, wie Änderungen an den Umgebungsvariablen verteilt sind (ernsthaft, WM_SETTINGCHANGE? Windows-API? Dies ist nicht das Publikum dieser Frage!) Ist vielleicht keine gute Idee, da es den Leser verwirren könnte, anstatt zu erklären, worum es bei diesen Variablen geht. - Daniel Beck♦


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


Das Wikipedia-Artikel ist auch eine ausgezeichnete Referenz.

Linux und die meisten BSDs

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

  • Beispiele für das Voranstellen $HOME/bin zu $PATH in bash oder zsh:

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

    (In diesem speziellen Fall export ist seither unnötig PATH ist schon ein Teil der Umwelt.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

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

  • Anmeldung:

    • Konfiguration der Anmeldesitzung: Linux pam_env, die normalerweise von liest /etc/environment

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

      • bash Verwendet /etc/profile und der erste von: ~/.bash_profile, ~/.bash_login, ~/.profile. Handbuchseite bash(1) Sektion Aufruf.

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

      • zsh: Handbuchseite zsh(1) Sektion Start / Herunterfahren von Dateien.

      • csh und andere Shells: Siehe entsprechende Handbuchseiten.

    • Grafische Logins: Nicht sicher; kann je nach Login-Manager variieren. GDM scheint zu lesen ~/.profile in meinem System.

  • Öffnen eines Terminalfensters:

    • bash Verwendet /etc/bash.bashrc und ~/.bashrc.

Windows NT-Reihe

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

    Anhängen c:\bin zu %PATH%, benutzen:

    set path=%path%;c:\bin
    

    Dies betrifft nur das cmd.exe Prozess und irgendwelche Neu Prozesse von ihm gestartet.

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

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

    Änderungen werden in der Registrierung gespeichert (siehe unten) und gelten sofort für alle Neu Prozesse, die vom Explorer (der grafischen Shell) erstellt werden, z. B. über das Startmenü.

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

    Benutzerumgebung wird beibehalten HKCU\Environment und während der Benutzeranmeldung geladen.

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

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

  • In MS-DOS-Eingabeaufforderung (command.com), benutzen set name=valuewie in WinNT.

    Ähnlich läuft es set interaktiv beeinflusst nur diesen command.com Instanz, zusammen mit allen neuen Prozessen, die daraus gestartet werden.

  • Um dauerhafte Änderungen vorzunehmen, fügen Sie entsprechende hinzu oder bearbeiten Sie sie entsprechend set Linien in C:\AUTOEXEC.BAT, dann neu starten.

    • Problemumgehung, um den Neustart zu vermeiden, für Windows 9x: Öffnen eines MS-DOS-Eingabeaufforderungsfensters, Festlegen der entsprechenden Variablen, Schließen des vorhandenen Explorer-Prozesses (Start → Herunterfahren → Halten Sie Strg + Umschalt gedrückt und klicken Sie auf Stornieren), Lauf explorer.exe aus dem MS-DOS-Eingabeaufforderungsfenster.

VMS

(Konnte nicht widerstehen.)

DCL hat kein Konzept von "Pfad", aber verschiedene Symbol- und Befehlsdefinitionen können eingefügt werden SYS$LOGIN:LOGIN.COM.


61
2018-05-16 19:03



Der VMS-Abschnitt ist falsch. DCL hat DCL$PATH zum "automatische Fremdbefehle". - JdeBP
@grawity, was meinst du mit "vms konnte nicht widerstehen ..."? - Pacerier


Für die bash Schale PATH Globale (Nicht-Terminal-) Umgebungsvariablen, folge ich der Konvention, die in meiner Ubuntu VM-Installation verwendet wird - andere Shells variieren:

Vorbehalt: Die gesamte Shell-Startsequenz, die .bashrc, .profileusw. werden Dateien in dieser Reihenfolge bezogen? Wann muss ich mich neu anmelden, um die neu definierten Variablen, Aliase usw. zu sehen? Was ist der Unterschied zwischen einer Login-, interaktiven und nicht-interaktiven Shell - die ich benutze? cron?, und warum, wenn ich a . ~/.bashrc ist mein dummes PATH Variable wächst länger und länger? sind die Schlüsselfragen, die mir in den Sinn kommen, wenn ich an meine denke PATH Variable.

In der Tat habe ich einfach meine gesamte Bash-Startup-Datei vollständig neu geschrieben, indem ich Ideen aus den Ubuntu- und Cygwin-Skeleton-Dateien übernommen habe, und hier sind einige meiner Seiten:

  1. Exportieren Sie die PATH und andere globale Umgebungsvariablen (d. h. LD_LIBRARY_PATH) Variablen in der .profile;
  2. Nutze Logik in ~/.profile zur Quelle $HOME/.bashrc wenn es existiert;
  3. Fence Ausführung des ~/.bashrc mit einem Test für die interaktive Ausführung, andernfalls beenden;
  4. Setzen Sie alle Aliase, shopt's, prompte Einrichtung, Verlaufskontrolle, Terminal-Setup, Funktionsdefinition, etc. (interaktive verwandte Setup) im Teil von ~/.bashrc das ist geschützt, um nur im interaktiven Modus zu laufen;
  5. Die anderen bash Startup-Dateien loswerden, weil ihre Existenz bestimmt, ob der Kontrollpfad durch .profile und .bashrc funktioniert wie erwartet. Das heißt, es sei denn, es gibt spezielle Anforderungen, um etwas anderes zu tun, entfernen Sie ~/.bash_profile & ~/.bash_login;
  6. Wenn ich an der Bash-Eingabeaufforderung bin und einige Standardeinstellungen aktualisieren muss, bearbeite ich meine ~/.bashrc Datei, dann einfach mit a . ~/.bashrc um diese Änderungen in meiner aktuellen Shell zu bekommen.
  7. Wenn ich eine Änderung an einer Umgebungsvariablen wie PATHIch muss ändern und meine Quelle beziehen ~/.profile;
  8. Ich setze meine Anrufe auf Fink, Port und braue spezifische Setups in .profile.

Das sind meine 2 Cent zu diesem Thema.


8
2018-01-15 17:49





F:  WAS sind Umgebungsvariablen?

EIN: Umgebungsvariablen sind Variablen in jeder Programmiersprache ähnlich. Im Fall von Windows- oder Unix-Systemen speichern sie verschiedene Werte, um es Programmen und Aufgaben zu ermöglichen, notwendige Betriebssysteminformationen oder "Umgebungs" -Informationen zu erhalten. Für zB:

USERPROFILE: Benutzerverzeichnis innerhalb der OS-Datei.

MAIL: Wo sich eine Benutzer-Mail in den BS-Dateien befindet.

F: WAS ist die PATH-Variable speziell?

EIN: Die PATH-Variable legt Verzeichnispfade fest, in denen Befehle ausgeführt werden, 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 sieht auf die PATH-Variable Windows Environment System aus und testet jeden Speicherort für die angegebene ausführbare Datei. Wenn Sie also der PATH-Variablen einen Speicherort hinzufügen, kann eine ausführbare Datei direkt aufgerufen werden.

"Wenn ein Befehl in einer Befehlsshell eingegeben wird oder ein Systemaufruf von einem Programm ausgeführt wird, um ein Programm auszuführen, durchsucht das System zuerst das aktuelle Arbeitsverzeichnis und durchsucht dann den Pfad und untersucht jedes Verzeichnis von links nach rechts." http://en.wikipedia.org/wiki/PATH_(variable)


F: Wie fügt man der PATH-Variablen einen Ort hinzu?

EIN: Sie müssen die Variablenzeichenfolge der Umgebungsvariablen PATH so bearbeiten, dass sie den Speicherort der ausführbaren Datei enthält.

Eine Möglichkeit, dies zu tunhttps://kb.wisc.edu/cae/page.php?id=24500) 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 PATH möchten Sie wahrscheinlich EDITIEREN). 5. Fügen Sie Ihren Standortpfad hinzu. zB: C: \ wamp \ bin \ php \ php5.5.12;

Ich hoffe, dies verdeutlicht etwas von der Verwirrung. Bearbeitungen und Kommentare sind willkommen.


6
2017-07-25 09:57