22

Прямо сейчас это такой беспорядок. Каждый раз, когда я устанавливаю новую программу, которая делает что-то тривиальное в командной строке, я должен добавить ее в путь. Фактически, я разрабатываю для Ruby, и даже гемы (плагины / расширения) иногда имеют свои собственные исполняемые файлы и хранятся в разных папках, и мне приходится добавлять несколько путей для каждого приложения. Дошло до того, что я нажимаю тридцать путей в моей переменной окружения PATH.

Я осторожно копирую и вставляю их в домашнюю папку и задаю путь к ней; это просто кажется неправильным. Есть ли признанная лучшая практика, которую мне не хватает?

3 ответа3

13

В моей %UserProfile%\Apps находятся несколько небольших автономных утилит, таких как архиваторы и тому подобное. Затем есть ряд командных файлов, которые я написал и часто использую, которые находятся в %UserProfile%\Batches . В остальном я просто добавляю их в PATH , что делается либо установщиком, либо с помощью

setx PATH "%PATH%;%CD%"

из соответствующего каталога. Число путей там, вероятно, должно стать проблемой только в том случае, если содержимое становится слишком длинным (существуют ограничения длины для переменных среды).

Вы можете (и я иногда это делаю) писать небольшие командные файлы-оболочки для таких программ. Простое копирование / жесткая ссылка / символическая ссылка исполняемого файла в другой каталог, вероятно, не будет работать в Windows, но вы можете легко создать командный файл, например, для программы Foo:

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

и затем вы можете добавить папку, в которой вы храните эти пакетные файлы, в вашу PATH .

10

Я не уверен в каких-либо конкретных лучших практиках. Но я предпочитаю использовать GUI PATH Editor для управления переменными PATH. Так что это можно четко поддерживать.

Список PATH Editor -

Rapid Environment Editor

Редмондский редактор PATH

2

Теперь, когда большинство компьютеров с Windows поставляется с PowerShell, я использую в своем профиле пользователя много команд sal/Set-Alias, поэтому, если в приложении есть только одно или два приложения, которые я использую, я создам псевдонимы только для этих двух команд вместо добавления вся папка приложения к пути. Примеры включают SQL Management Studio, Notepad++, TFS Power Tools (средство командной строки, tfpt.exe). Я также копирую свой профиль пользователя на разных компьютерах, так что это позволяет мне проверить наличие этого приложения на текущем компьютере перед созданием псевдонима (иногда предупреждение, если приложение не установлено).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .