Windows PATH / 환경 변수 관리에 대한 모범 사례?


22

지금, 그것은 엉망입니다. 커맨드 라인에서 사소한 일을하는 새로운 프로그램을 설치할 때마다 경로에 추가해야합니다. 사실, Ruby에서 개발하고 있으며 심지어 gem (플러그인 / 확장자)에는 자체 실행 파일이 있으며 다른 폴더에 저장되므로 응용 프로그램마다 여러 경로를 추가해야합니다. 내 PATH 환경 변수에서 30 개의 경로를 밀고 있다는 시점에 도달했습니다.

복사하여 붙여 넣은 홈 폴더에 붙여 넣고 그 경로를 설정하는 데 신중합니다. 그냥 잘못 느낀다. 내가 놓친 모범 사례가 있습니까?


이것은 훌륭한 질문입니다. UNIX에서는 프로그램을 실행하는 것이 쉽지만 Windows에서는 그러한 고통이 있습니다. 유일한 해결책이 여전히 그렇게 어려운 것처럼 보인다는 것은 부끄러운 일입니다.
user10550

답변:


13

%UserProfile%\Apps보관소 등과 같은 여러 개의 자체 포함 된 유틸리티가 내 폴더에 있습니다. 그런 다음 내가 작성하고 자주 사용하는 배치 파일이 많이 있습니다 %UserProfile%\Batches. 나머지 PATH는 설치 프로그램에 의해 또는에 의해 수행됩니다.

setx PATH "%PATH%;%CD%"

적절한 디렉토리에서. 내용이 너무 길면 환경 변수에 대한 길이 제한이있는 경우에만 경로가 문제가 될 수 있습니다.

그런 프로그램을 위해 작은 래퍼 배치 파일을 작성할 수 있습니다. 실행 파일을 다른 디렉토리에 간단히 복사 / 하드 링크 / 심 볼링하면 Windows에서는 작동하지 않지만 Foo 프로그램과 같은 배치 파일을 쉽게 만들 수 있습니다.

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

그런 다음 해당 배치 파일을 저장할 폴더를에 추가 할 수 있습니다 PATH.


이 래퍼 배치 파일은 어떻게 작동합니까? 실제 경로를 요구하는대로 정확하게 작동합니까? 그렇다면 놀랍습니다.
저스틴 L.

@ 저스틴 : 배치 파일에 주어진 모든 인수를 실제 프로그램에 위임합니다. 그것이 상주하는 곳에서 당신은 자신을 알아야합니다.
Joey

흠; 바이너리의 디렉토리를 PATH에 추가하고 바이너리의 래퍼 배치 파일을 PATH의 사용자 정의 디렉토리에 만드는 것 사이에는 기능상의 차이점이 있습니까?
저스틴 L.

@Justin : 배치 파일에서 배치 파일을 다시 사용하면 있습니다. 그 외에도 나는 아무것도 모른다.
Joey

@Joey 래퍼 아이디어가 마음에 들며 cmd에서 프로그램을 시작하는 데 좋지만 start..run에서 시작할 때 cmd 창이 프로그램이 시작되기 전에 뛰어 오르는 데 방해가됩니까? 모든 프로그램의 디렉토리를 경로에 넣고 길게 할 수도 있습니다. 아직까지 아직까지!
barlop

10

특정 모범 사례에 대해 잘 모르겠습니다. 그러나 GUI 경로 편집기 도구를 사용하여 경로 변수를 관리하는 것이 좋습니다. 명확하게 유지 될 수 있도록.

PATH 편집기 목록-

빠른 환경 편집기

레드몬드 PATH 편집기


그래픽 편집기를 사용하면 작업이 훨씬 쉬워 질 수 있습니다.
Justin L.

그 Redmond PATH 편집기는 정확히 내가 찾던 것입니다. +1
Nathan Ridley

문제는 items 추가뿐만 아니라 변수 관리에 관한 것입니다. 따라서 다른 솔루션이 PATH 변수의 내용을 대부분 숨기므로 이것이 가장 정답이며 IMO 모범 사례입니다.
taurelas

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.