Meilleure pratique pour la gestion des variables Windows PATH / d'environnement?

22

En ce moment, c'est un tel bordel. Chaque fois que j'installe un nouveau programme qui fait quelque chose de trivial dans la ligne de commande, je dois l'ajouter au chemin. En fait, je développe sur Ruby et même les gemmes (plugins / extensions) ont parfois leurs propres exécutables, et sont stockées dans différents dossiers et je finis par devoir ajouter plusieurs chemins par application également. J'en suis arrivé au point où je pousse trente chemins dans ma variable d'environnement PATH.

Je suis prudent de les copier et de les coller dans un dossier personnel et de définir le chemin d'accès à cela; il se sent juste mal. Existe-t-il une meilleure pratique établie qui me manque?

Justin L.
la source
C'est une si grande question - exécuter des programmes est si facile sous UNIX mais une telle douleur sous Windows. C'est dommage que les seules solutions semblent toujours aussi difficiles ...
user10550

Réponses:

13

Un certain nombre de petits utilitaires autonomes résident dans mon %UserProfile%\Appsdossier, tels que des archiveurs et similaires. Ensuite, il y a un certain nombre de fichiers batch que j'ai écrits et que j'utilise fréquemment et qui résident %UserProfile%\Batches. Pour le reste, je les ajoute juste au PATH, ce qui est soit fait par un installateur soit avec

setx PATH "%PATH%;%CD%"

à partir du répertoire approprié. Le nombre de chemins d'accès ne devrait probablement devenir un problème que si le contenu est trop long (il existe des limites de longueur pour les variables d'environnement).

Vous pouvez (et je le fais parfois) écrire de petits fichiers batch pour ces programmes. La simple copie / liaison fixe / liaison symbolique de l'exécutable dans un autre répertoire ne fonctionnera probablement pas sous Windows mais vous pouvez facilement créer un fichier batch, par exemple pour le programme Foo:

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

et vous pouvez ensuite ajouter le dossier dans lequel vous stockez ces fichiers de commandes dans votre PATH.

Joey
la source
Comment fonctionnent ces fichiers batch d'encapsulage? Fonctionnent-ils exactement comme nécessitant le chemin réel? Si c'est le cas, c'est incroyable.
Justin L.
@Justin: Ils délèguent simplement tous les arguments donnés au fichier de commandes au programme réel. Où cela réside, vous devez vous connaître.
Joey
Hm; Je devrais clarifier - y a-t-il une différence fonctionnelle entre l'ajout du répertoire du binaire à PATH et la création d'un fichier batch wapper du binaire dans un répertoire personnalisé qui se trouve sur le PATH?
Justin L.
@Justin: Si vous utilisez à nouveau les fichiers batch dans des fichiers batch, il y en a un. Hormis cela, je n'en connais aucun.
Joey
@Joey J'aime l'idée de wrapper, bonne pour lancer des programmes à partir de cmd, mais lors du lancement à partir de start..run, c'est une distraction pour une fenêtre cmd de sauter avant le lancement du programme, avez-vous un moyen de contourner cela? il semble que l'on puisse aussi bien mettre les répertoires de tous les programmes dans le chemin et le laisser être long. si près et pourtant si loin!
barlop
10

Je ne suis pas sûr des meilleures pratiques spécifiques. Mais je préfère utiliser les outils GUI PATH Editor pour gérer les variables PATH. Pour qu'il soit clairement maintenu.

Liste de l'éditeur PATH -

Éditeur d'environnement rapide

Redmond PATH Editor

ukanth
la source
Les éditeurs graphiques pourraient rendre les choses beaucoup plus faciles hein
Justin L.
Cet éditeur de Redmond PATH est exactement le genre de chose que je cherchais. +1
Nathan Ridley
La question concernait la GESTION de la variable, pas seulement l'ajout des éléments. C'est donc la réponse la plus correcte et l'OMI la meilleure pratique car d'autres solutions cachent la plupart du contenu de la variable PATH.
taurelas
2

Maintenant que la plupart des machines Windows sont livrées avec PowerShell, j'utilise de nombreuses commandes sal / Set-Alias ​​dans mon profil utilisateur.Par conséquent, si une application n'a qu'une ou deux applications que j'utilise, je crée des alias pour ces deux commandes uniquement au lieu d'ajouter le dossier d'application entier vers le chemin d'accès. Les exemples incluent SQL Management Studio, Notepad ++, TFS Power Tools (outil de ligne de commande, tfpt.exe). Je copie également mon profil utilisateur sur plusieurs machines, ce qui me permet de vérifier l'existence de cette application sur la machine actuelle avant de créer l'alias (parfois un avertissement si l'application n'est pas installée).

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
yzorg
la source