Best Practice für die Verwaltung von Windows-PATH- / Umgebungsvariablen?


22

Im Moment ist es so ein Durcheinander. Jedes Mal, wenn ich ein neues Programm installiere, das etwas Triviales in der Befehlszeile ausführt, muss ich es dem Pfad hinzufügen. Tatsächlich entwickle ich auf Ruby und selbst Juwelen (Plugins / Erweiterungen) haben manchmal ihre eigenen ausführbaren Dateien und werden in verschiedenen Ordnern gespeichert, und am Ende muss ich auch mehrere Pfade pro Anwendung hinzufügen. Es ist so weit gekommen, dass ich in meiner PATH-Umgebungsvariablen dreißig Pfade schiebe.

Ich bin vorsichtig beim Kopieren und Einfügen in eine Art Home-Ordner und beim Festlegen des Pfades dafür. es fühlt sich einfach falsch an. Gibt es eine bewährte Methode, die mir fehlt?


Dies ist eine großartige Frage - das Ausführen von Programmen ist unter UNIX so einfach, unter Windows jedoch so schmerzhaft. Es ist eine Schande, dass die einzigen Lösungen immer noch so harte Arbeit zu sein scheinen ...
user10550

Antworten:


13

In meinem %UserProfile%\AppsOrdner befinden sich eine Reihe kleiner, eigenständiger Dienstprogramme , z. B. Archivierungsprogramme und dergleichen. Dann gibt es eine Reihe von Batch-Dateien, die ich geschrieben habe und die ich häufig verwende %UserProfile%\Batches. Im übrigen füge ich sie einfach dem hinzu PATH, was entweder von einem Installer oder mit gemacht wird

setx PATH "%PATH%;%CD%"

aus dem entsprechenden Verzeichnis. Die Anzahl der Pfade sollte wahrscheinlich nur dann zum Problem werden, wenn der Inhalt zu lang wird (es gibt Längenbeschränkungen für Umgebungsvariablen).

Sie können (und ich manchmal) kleine Wrapper-Batch-Dateien für solche Programme schreiben. Das einfache Kopieren / Verknüpfen / Verknüpfen der ausführbaren Datei in ein anderes Verzeichnis funktioniert unter Windows wahrscheinlich nicht. Sie können jedoch problemlos eine Batchdatei erstellen, z. B. für das Programm Foo:

@"%ProgramFiles%\Foosoft Foo\foo.exe" %*

und Sie können dann den Ordner hinzufügen, in dem Sie diese Batchdateien speichern PATH.


Wie funktionieren diese Wrapper-Batchdateien? Arbeiten sie genau so, wie es der tatsächliche Pfad erfordert? Wenn ja, ist das erstaunlich.
Justin L.

@Justin: Sie delegieren einfach alle Argumente, die an die Batch-Datei übergeben wurden, an das eigentliche Programm. Wo das liegt, musst du selbst wissen.
Joey

Hm; Ich sollte klarstellen - gibt es einen funktionalen Unterschied zwischen dem Hinzufügen des Binärverzeichnisses zu PATH und dem Erstellen einer Wapper-Batch-Datei der Binärdatei in einem benutzerdefinierten Verzeichnis, das sich auf dem PATH befindet?
Justin L.

@Justin: Wenn Sie die Batch-Dateien wieder in Batch-Dateien verwenden, dann gibt es. Ansonsten sind mir keine bekannt.
Joey

@Joey Ich mag die Wrapper-Idee, die sich gut zum Starten von Programmen aus cmd eignet, aber beim Starten von start..run ist es eine Ablenkung, wenn ein cmd-Fenster hochspringt, bevor das Programm gestartet wird. es scheint, man könnte auch die Verzeichnisse für alle Programme in den Pfad setzen und es lang sein lassen. so nah und doch so fern!
Barlop

10

Ich bin mir nicht sicher, welche Best Practices es gibt. Ich bevorzuge jedoch die Verwendung von GUI PATH Editor-Tools, um PATH-Variablen zu verwalten. Damit es übersichtlich gepflegt werden kann.

Liste von PATH Editor -

Rapid Environment Editor

Redmond PATH Editor


Grafische Editoren könnten die Dinge viel einfacher machen
Justin L.

Dieser Redmond PATH Editor ist genau das, wonach ich gesucht habe. +1
Nathan Ridley

Die Frage war, die Variable zu verwalten und nicht nur die Elemente hinzuzufügen. Dies ist also die richtigste Antwort und IMO die beste Vorgehensweise, da andere Lösungen den größten Teil des Inhalts der PATH-Variablen verbergen.
Taurelas

2

Jetzt, da die meisten Windows-Computer mit PowerShell geliefert werden, verwende ich viele sal / Set-Alias-Befehle in meinem Benutzerprofil. Wenn eine App also nur ein oder zwei von mir verwendete Apps enthält, erstelle ich Aliase für diese beiden Befehle, anstatt die hinzuzufügen ganze app ordner auf den pfad. Beispiele hierfür sind SQL Management Studio, Notepad ++ und TFS Power Tools (Befehlszeilentool, tfpt.exe). Ich kopiere mein Benutzerprofil auch maschinenübergreifend. Auf diese Weise kann ich überprüfen, ob diese App auf dem aktuellen Computer vorhanden ist, bevor ich den Alias ​​erstelle (manchmal eine Warnung, wenn die App nicht installiert ist).

filter ctQuoteString { "`"$_`"" }
filter ctResolvePath { Resolve-Path $_ | select -ExpandProperty Path | ctQuoteString } # used in Edit.ps1

$nppExe = "C:\Program Files (x86)\Notepad++\notepad++.exe"
if ((Test-Path variable:\nppExe) -and (Test-Path $nppExe)) {
    function EditNotepadPP { 
        param ([parameter(ValueFromPipelineByPropertyName=$true)][Alias("FullName","FileName")]$Path) 
        begin { if (! $nppExe) { throw 'variable $nppExe is not defined' } }
        process {
            $Path | ctResolvePath | % { # ctResolvePath will get full path and surround with quotes
                & $nppExe $_
            }
            #AddEditHistory $Path #if you need detailed time tracking, might help to create a log what files you're editting
       } 
    }
    Set-Alias npp EditNotepadPP
}

# I have similar functions for other apps.
Set-Alias vs EditVS
Set-Alias tfe EditTFCheckout
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.