Windows 10에서 환경 변수가 너무 큼


147

나는 이것이 이상하다는 것을 알고 있으며 유용한 솔루션을 얻지 않고 온라인으로 솔루션을 검색하는 데 거의 3 일을 보냈습니다. 그래서 여기에 오기로 결정했습니다.

최근에 Windows 8.1에서 Windows 10으로 업그레이드했습니다.

이제 새로운 Apache Maven 설치를위한 환경 변수를 설정하고 싶었습니다.

사용자 변수를 만들 때마다 문제가 없습니다. 그러나 사용자 변수에서 aready가 작성한 변수에 "path"가되도록 bin 디렉토리를 추가해야하는 시스템 변수도 작성해야합니다.

이제이 작업을 수행 할 때마다 "이 환경 변수가 너무 큽니다.이 결과 경로를 만들 수 없습니다.

이 오류의 이미지를 첨부했습니다.

누구 든지이 문제를 해결하도록 도와 줄 수 있다면 감사하겠습니다.

도움을 주셔서 감사합니다.여기에 이미지 설명을 입력하십시오


14
나는 그들이 언젠가 이것을 고치기를 바랍니다. 이런 일이 발생해서는 안됩니다 ^^.
itmuckel

1
올바른 솔루션은 애플리케이션이 PATH환경 변수 오용을 중지하는 것입니다. 적절한 해결책은 현재 거의 20 년 동안 존재 해왔다 . 그러나 개발자가이를 사용하게하는 것은 이빨을 당기는 것과 같습니다.
Ian Boyd

답변:


148

PATH 변수에 너무 많은 값이 오버로드되면 더 이상 값을 추가 할 수없는 지점에 도달합니다. 다음을 시도하면 문제가 해결됩니다.

해결책 1 :

  1. 'NEWPATH'라는 새 시스템 변수를 만듭니다.
  2. bin 디렉토리 위치를 'NEWPATH'에 지정하십시오.
  3. 이제 ' ; % NEWPATH % '를 PATH 변수에 추가

그래도 문제가 해결되지 않으면 기존의 PATH 변수 일부를 'NEWPATH'에 복사 한 다음 'NEWPATH'를 추가하십시오.

해결책 2 :

경로를 그룹화하고 단축 할 수있는 경우 PATH 변수 값을 확인하십시오. 예를 들어

C : \ Program Files \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C : \ 프로그램 파일 \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

에 결합 될 수있다

C : \ Program Files \ Microsoft SQL Server;

이런 식으로 고정 길이 PATH 변수에 더 많은 공간을 확보하고 마지막으로 bin 디렉토리 위치를 PATH로 조정할 수 있습니다.

이것이 당신에게 도움이되기를 바랍니다!


예, 당신은 매우 정확합니다. 너무 많은 연구에 따르면 경로 변수는 2048 자만 사용할 수 있으며 문자 가이 단계에 도달하면 경로 변수는 더 이상 많은 문자를 사용할 수 없습니다. 그래서 나는 당신이 제안한 것을 시도했고 지금은 괜찮습니다. 감사합니다
olammy

감사합니다! 그것은 솔루션 1 @ 좋은 생각입니다! 저 자신을 생각해야했는데 ... :)
Dev-iL

2
이것은 매력처럼 작동합니다, 감사합니다! 그러나이 방법을 사용 하면 결과를 setx PATH직접 확인할 %NEWPATH%수 있고 결과 문자열이 너무 길어질 수 있으므로주의해야합니다 . 따라서이 방법을 사용하면 명령 줄이 아닌 대화 상자 만 사용해야합니다.
IceFire

1
이것은 완전히 일을하지 않는 @SwapnilKamat : 나는 miktex을 사용하고, 그것 pdflatex가지고는있는 것으로 PATH나는의 위치를 넣어 경우 pdflatexNEWPATH, pdflatex그것은 더 이상 찾을 수없는 것 ( "명령이 pdflatex인식되지 않습니다"...)
Olorin

7
아이러니하게도 Microsoft SQL Server는 너무 많은 경로 변수를 설정하여 공간을 거의 차지하지 않습니다. PATHS_MSSQL 변수를 만든 다음 % PATHS_MSSQL %를 PATH 변수에 추가하여 대체했습니다. PATH 변수에서 많은 공간을 확보했습니다.
Steve Lloyd

49

경로 변수를 정리하는 몇 가지 방법이 있습니다. 가장 쉬운 방법은 Rapid Environment Editor 를 사용하는 것 입니다. 이 무료 유틸리티는

  1. 중복 경로를 제거하십시오 (마우스 오른쪽 단추 클릭> 정리 경로).
  2. 존재하지 않는 폴더 제거 (빨간색으로 표시되어 수동으로 삭제해야 함)
  3. 긴 경로를 짧은 경로로 바꿉니다 (오른쪽 클릭> 긴 경로에서 짧은 경로로).

위의 단계를 순서대로 수행하고 경로 변수 크기가 다시 제어 될 때까지 가장 긴 경로에 대해서만 3 단계를 사용하십시오.

좀 더 발전 하고 싶다면 구현하려는 다른 로직으로 수정할 수있는 작은 C # 도구 가 있습니다.


이 게시물을 읽기 전에 어느 도구에 대해 들어 본 적이 없지만 기뻐했습니다! 공유해 주셔서 감사합니다!
James Shaw

2
이 도구는 굉장합니다! MS는 Windows와 함께 제공되는 공식 편집기로 만들어야합니다!
burzum

35

Environment PATH 변수 길이 제한을 무시하는 또 다른 솔루션 또는 해결 방법은 PowerShell스크립트 를 사용하여 경로를 관리 (추가, 제거 또는 업데이트)하는 것입니다 .

  1. "텍스트 편집"(위 스크린 샷 참조)을 클릭하여 현재 PATH 변수를 캡처하고 클립 보드에 복사 한 다음 텍스트 파일에 백업으로 저장하여 놀라움을 피하십시오. 이것은 필수 사항은 아니지만 문제가 발생한 경우 복구 할 수 있습니다.

  2. 이제 백업되었으므로 새 PowerShell (.ps1) 파일에 다음을 추가합니다 (추가하려는 폴더 경로 (+ 부호 뒤의 부분)와 함께 아래 첫 번째 줄을 수정).

    $ newPath = $ env : 경로 + '; C : \ Users .... \ FirstFolderToAddToPath; C : \ Users .... \ SecondFolderToAddToPath; '

    [Environment] :: SetEnvironmentVariable ( "경로", $ newPath, "기계")

    $ env : Path = $ newPath

이것은 Windows 10 UI를 사용하여 재생 한 후 길이 제한으로 인해 대부분의 경로를 잃어 버린 (긴) PATH 변수를 다시 얻는 방법입니다. 도움이 되길 바랍니다.


고마워 .. 이것은 쉬웠다. 호기심 2 라인과 3 라인의 값 할당의 차이점
Nayak

3 행은 현재 세션에서 설정하고 2 행은 시스템 기본값으로 설정합니다.
Tetsujin no Oni

2
PS는 더 긴 경로에서 작동하지만 기존의 setx /m문자는 1048 자로 잘립니다 :(. 텍스트 편집기에서 경로를 편집하고 그냥 할 수도 [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine")있습니다. 관리자 셸이 필요합니다.
Shital Shah

PS는 사용할 수 있지만 GUI는 사용할 수 없습니다. 흠, 어떻게 이해가 되나요? 감사합니다!
레전드

10

Swapnil의 답변 외에도 Path 변수의 최대 길이를 수정할 수 있습니다. 그렇지 않으면 2048 자로 제한됩니다 (단일 경로는 206 자로 제한됩니다). Windows 10에서는 LongPathsEnabled레지스트리 키를 1 로 설정하면 됩니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

레지스트리 편집기에 액세스하려면을 Windows Key+R입력하십시오 Regedit.

출처 : https://superuser.com/a/1119980

https://superuser.com/a/1119980/327009 에서이 수퍼 유저 답변을 확인하십시오.

아래 주석을 언급하면 ​​"환경 변수가 너무 큽니다"라는 오류는 현재 추가되는 단일 경로가 아니라 전체 변수와 관련이 있습니다.


19
이것이 정확한 조언입니까? PATH 변수의 최대 길이 (예 : 여러 경로의 연결 )는 2048 자입니다. 언급 한 260 자는 한 경로 의 최대 길이입니다 . 그것들은 관련되어 있지만 동일하지는 않습니다.
Hendy Irawan

7

늦게 대답했지만 비슷한 것을 찾고 있었고 여기서 끝났습니다. 프로그램 파일 및 프로그램 데이터에 대한 모든 경로를 변수로 변경했습니다 (중요하지는 않지만 1 문자를 저장합니다).

nodejs와 같은 것을 위해 정상적인 경로를 변경했습니다.

C : \ 프로그램 파일 \ nodejs \

% ProgramFiles % \ nodejs \

"C : \ Program Files (x86) \"및 "% ProgramFiles (x86) % \"를 사용하여 수행 할 수 있습니다.

그것은 나에게 약간의 문자를 저장했지만 충분하다고 느끼는 불만을 멈추었습니다.


7
왜 "C : \ Program Files (x86)"를 대체하기 위해 % x86 %를 사용하고 "C : \ Program Files"를 대체하기 위해 % x64 %를 사용하지 않는 것이 문자 오버 헤드를 줄이는 훨씬 좋은 방법 인 것 같습니다.
Xorcist

1
@ Xorcist-좋은 하나! 이것에 대해 전혀 몰랐습니다
mark1234

나는 그들이 기본적으로 존재한다고 생각하지 않지만 직접 만들 수 있습니다.
Gabriel Fair

또한 "c : \ Program FIles"에 대해 % PF %를 만들었고 약 20 번 사용하면 경로를 충분히 단축 할 수있었습니다.
LaBracca

@ Xorcist 다른 변수를 작성하여 어떻게 수행합니까?
Demodave

5

PowerShell을 통해 할 수 있다는 것을 알았습니다.

[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")

그래서 기존 시스템 PATH를 잡고 메모장에 붙여 넣고 새로운 것을 추가 한 다음 위의 "C : \ Program Files"비트에 붙여 넣었습니다. 경로가 업데이트되었습니다. 끝난.


4

에 의해 수정 해보십시오 regedit , 내 경우에 때 길이가 3000 개 이상의 작동합니다.

을 누르고 Win + R입력 regedit하여 regedit를 엽니 다. 로 이동 하여 경로 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment값을 수정 Path하십시오. 그리고 컴퓨터를 다시 시작하면 작동합니다.


1
이것은 나를 위해 잘 작동합니다. 다른 방법보다 쉽다고 생각합니다.
shalitha senanayaka

1

해결 방법 :

시스템을 다시 시작하십시오. 시스템을 다시 시작한 후 PATH는 더 이상 비어 있지 않지만 2047 (4095) 자로 잘릴 수 있습니다. 시스템을 다시 시작해도 도움이되지 않으면 다음을 수행하십시오.

c : \ windows \ system32 \ regedit.exe 실행 레지스트리 하이브로 이동 "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" "경로"키에서 불필요한 디렉토리 정리 시스템을 다시 시작하십시오.

참고 : 일부 예외적 인 경우 시스템을 시작할 수없는 경우 :

안전 모드로 로그인 명령 프롬프트 셸을 열고 다음을 입력합니다. reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment"/ v Path / t REG_EXPAND_SZ / d ^ % SystemRoot ^ % \ system32; ^ % SystemRoot ^ % /에프

자세한 내용은 https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable


한계를 최소한으로 늘리는 방법은 4095무엇입니까?
Dan M.


0

분명히 Rapid Environment Editor가 (@shatil_shah 답변에서)이 작업을 수행하지만 "8dot3"버전의 경로를 단축 할 수도 있습니다. 다음 두 가지 교체만으로 많은 마일리지를 얻을 수 있습니다.

C:\Program Files       --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2

현재 경로를 메모장에 복사하는 경우 먼저 검색 C:\Program Files (x86)하고 바꾼 다음를 클릭하십시오 C:\Progam Files.


-3

해결 방법. 텍스트 편집기에서 텍스트 편집 및 PATH 편집


2
나는 당신의 조언을 따르려고 노력하고 있습니다. 내 컴퓨터에 어떤 환경 변수가 저장되어 있습니까?
가브리엘 페어

그것은 단지 텍스트입니다. 메모장을 사용하여 엽니 다
Christoph Adamakis

@GabrielFair Edit Text파일을 여는 대신 이라는 버튼을 클릭해야했습니다 .
AlexMelw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.