programing

윈도우즈 10에서 환경 변수가 너무 큽니다.

lastmoon 2023. 4. 22. 09:59
반응형

윈도우즈 10에서 환경 변수가 너무 큽니다.

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

이제 Apache Maven을 새로 설치할 환경 변수를 설정하려고 합니다.

사용자 변수를 생성할 때마다 모든 것이 정상적이었습니다.단, 시스템 변수도 작성해야 합니다.이 경우 사용자 변수에서 이미 작성한 변수에 bin 디렉토리를 "path"로 추가해야 합니다.

이 작업을 수행할 때마다 "This environment variable is too large"라는 오류가 나타납니다.이로 인해 경로를 만들 수 없습니다.

이 에러의 이미지를 첨부합니다.

여기에 이미지 설명을 입력하십시오.

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

해결책 1:

  1. 새 시스템 환경 변수(예: 'NEWPATH')를 생성합니다.
  2. 'NEWPATH'에 bin 디렉터리 위치 할당
  3. 이제 '; %NEWPATH%'를 PATH 환경변수에 추가합니다.

그래도 작동하지 않으면 기존 PATH 환경 변수의 일부 값을 'NEWPATH'에 복사한 다음 'NEWPATH'를 추가하십시오.

해결책 2:

경로를 그룹화하고 단축할 수 있는 경우 PATH 환경변수 값을 확인합니다.예를들면,

C:\Program Files\Microsoft SQL Server\102\도구\Binn;C:\Program Files\Microsoft SQL Server\102\DTS\Bin;

결합할 수 있다

C:\Program Files\Microsoft SQL Server;

이렇게 하면 고정 길이 PATH 변수에 더 많은 공간을 구축하고 마지막으로 bin 디렉토리 위치를 PATH로 조정할 수 있습니다.

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

  1. 중복 경로 제거(우클릭 → 정리 경로)
  2. 존재하지 않는 폴더 삭제(수동으로 삭제해야 하는 빨간색 표시)
  3. 긴 경로를 짧은 경로로 대체합니다(우클릭 → 긴 경로에서 짧은 경로로).

위의 단계를 순서대로 수행하여 경로 변수 크기가 다시 제어될 때까지 세 번째 단계를 가장 긴 경로에 대해서만 사용합니다.

보다 고도의 기능을 필요로 하는 경우는, 실장하는 다른 로직으로 변경할 수 있는 작은 C#툴을 소개합니다.

PATH 환경의 가변 길이 제한을 우회하는 다른 해결책 또는 그 이상의 회피책은 PowerShell 스크립트를 사용하여 경로를 관리하는 것입니다(추가, 삭제 또는 업데이트).

  1. "텍스트 편집"(위 스크린샷 참조)을 클릭하여 현재 PATH 변수를 캡처한 후 클립보드에 복사하고 텍스트 파일로 저장하여 예기치 않은 상황을 방지합니다.이것은 필수는 아니지만, 문제가 발생했을 때 회복할 수 있습니다.

  2. 되었으므로 다음 새아래의 첫 합니다).+ : 점호) :

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

[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")

$env:Path = $newPath

이렇게 해서 Windows 10 UI를 가지고 놀다가 길이 제한에 걸려 경로의 대부분을 잃은 후에야 (긴) PATH 변수를 되찾을 수 있었습니다.

RegEdit으로 변경을 시도합니다.저 같은 경우에는 길이가 3000 이상일 때 효과가 있습니다.

+ 를 눌러 입력합니다.regeditRegEdit 。★★★★★★★★★★★★★★★로 이동Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\EnvironmentPath당신의 길을 찾아라.컴퓨터를 재부팅하면 동작합니다.

Swapnil의 답변 외에 경로 환경 변수의 최대 길이를 수정할 수 있습니다. 그렇지 않으면 2048자로 제한됩니다(단일 경로에는 206자로 과거 제한이 있음).

10에서는, 10 의 합니다.LongPathsEnabledURL을 1로 설정했습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

레지스트리 에디터에 액세스하려면 + 를 입력합니다.Regedit.

출처: Windows 10 "NTFS경로 정책 활성화" 옵션이 없습니다.

또, 다음의 Super User 의 회답도 참조해 주세요.창문들 10 NTFS경로정책 사용" 옵션에 대한 대답이 없습니다.

"Environment variable is too large"(환경변수가 너무 큽니다) 오류는 현재 추가 중인 단일 경로가 아니라 변수 전체와 관련이 있습니다(아래의 "부정확한 조언" 코멘트에 대한 답변).

추가 주의: 앱 호환성

키로, 레지스트리 키/그룹 정책에 .LongPathsEnabled라고 읽습니다

NTFS 긴 경로를 활성화하면 표시된 win32 응용 프로그램과 Windows Store 응용 프로그램이 노드당 보통 260 문자 제한을 초과하는 경로에 액세스할 수 있습니다.이 설정을 활성화하면 프로세스 내에서 긴 경로에 액세스할 수 있습니다.`

여기서 주의할 것은 표현된 용어이다.일반적으로 응용 프로그램은 매니페스트 파일에 명시적으로 기능을 선언해야 합니다.Windows Vista 이후 대부분의 win32 응용 프로그램이 표시됩니다.긴 경로를 사용하려면 앱 매니페스트가 필요합니다.longPathAware★★★★

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
        <ws2:longPathAware>true</ws2:longPathAware>
    </windowsSettings>
</application>

자세한 것은 이쪽.

은 '불만하다'고 했다.LongPathsEnabled는 아직 Windows 탐색기 및 기타 앱에서 지원되지 않지만 일반적으로 다른 기능을 사용할 수 있습니다.를 들어, 이 포럼에서 사용자가 다음과 같이 말합니다.

총사령관또한 승인 응용 프로그램이 확장 API 기능도 사용하는 경우 파일 이름을 편집하고 파일을 열거나 처리할 수 있습니다.
마찬가지입니다MKV Toolnix.또한 놀랍게도 MPC-HC는 몇 년 동안 개발되지 않았음에도 불구하고 매우 놀랍습니다.놀랄 것도 없이 VLC는 (진지하게?) 그렇지 않고 사랑스러운 PotPlayer도 그렇지 않다.

이것에 대해서도, Super User에 관한 흥미로운 논의가 있습니다.특히답변에서는 롱 패스를 사용하기 위한 두 가지 실현 가능한 대안, 즉 Cygwin(*nix 에뮬레이션 레이어)을 사용하는 방법과 NTFS 접속 포인트(본질적으로는 심볼릭링크 등)를 사용하여 롱 패스를 분할하는 방법에 대해 설명합니다.

Program Files 및 Program Data의 모든 경로를 변수로 변경했습니다(이것은 중요하지는 않지만 한 글자처럼 저장됩니다).

Node.js와 같은 경우에는 Node.js의 일반 경로를 변경했습니다.

C:\Program Files\nodejs\

로.

%ProgramFiles%\nodejs\

이것은 「C:」로 실시할 수 있습니다.\Program Files(x86)% 를 사용합니다.

몇 명의 캐릭터를 구했지만 불평을 멈추기에 충분하다고 생각해요.

PowerShell을 통해 할 수 있다는 것을 알게 되었습니다.

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

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

Rapid Environment Editor는 Shital Shah의 답변에서 이 작업을 수행할 것입니다.단, 8.3 파일명으로의 패스를 단축할 수도 있습니다.다음 두 가지 교체품만 있으면 많은 마일리지를 얻을 수 있습니다.

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

메모장에 하여 치환합니다.C:\Program Files (x86)그리고 나서.C:\Program Files.

회피책:

시스템을 다시 시작하십시오.시스템을 재부팅하면 PATH가 더 이상 비어 있지 않지만 2047(4095)자로 잘릴 수 있습니다.

시스템을 재기동해도 문제가 해결되지 않는 경우는, 다음을 실시해 주세요.

C:\windows\system32\regedit.exe실행합니다.레지스트리 하이브 "HKLM\SYSTEM\CurrentControlSet\Control"으로 이동합니다.세션 매니저\환경" 및 "경로" 키에서 불필요한 디렉토리를 정리합니다.시스템을 재기동합니다.

메모: 시스템을 기동할 수 없는 경우는, 다음과 같이 해 주세요.

  • 세이프 모드로 로그인

  • 명령 프롬프트셸을 열고 다음과 같이 입력합니다.

     reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d ^%SystemRoot^%\system32;^%SystemRoot^% /f
    

상세한 것에 대하여는, 다음을 참조해 주세요.

System PATH 변수 길이에 대한 제한

PowerShell과 같은 다른 방법 외에도 더 큰 텍스트 값을 처리할 수 있는 "Rapid Environment Editor"라는 멋진 GUI를 찾았습니다.

또한 변수를 검토하여 삭제할 수 있는 관련 없는 경로가 있는지 확인할 수도 있습니다.그러면 다른 변수를 추가할 수 있는 공간이 확보됩니다.

그래서 같은 문제를 발견했는데, 같은 장소를 가리키는 중복이 많이 있다는 것을 알게 되었습니다."Edit Environment Varibles" 버튼을 클릭하면 삭제 옵션으로 수행할 수 있는 중복 항목을 제거했습니다.

대신 텍스트 편집, 텍스트 복사, 메모장, excel, excel 등의 일반적인 앱을 사용하여 중복 제거 또는 python(.split(); 사용)을 사용하여 세트 변환, ";.join(stringSet)"으로 변환하고 ctrl+HIE를 사용하여 \로 대체할 수 있습니다.

나도 똑같은 문제가 있었어.결국 전체 길이를 2047보다 작게 만들기 위해 기존 변수 중 하나를 삭제해야 했습니다.

그럼 내가 추가할 수 있어%MAVEN_HOME%\bin패스 변수에 접속합니다.

회피책:버튼을 사용하여 텍스트 편집기에서 PATH를 편집합니다.

AutoHotkey 스크립트는 매우 긴 경로(현재 3743자)를 편집하거나 추가할 때 유용합니다.

https://gist.github.com/roblogic/59898966f3ce594eb78a5b6147013194

(이렇게 긴 여정의 결과가 어떻게 될지 모르겠습니다.아직은 수정하지 않으면 안 될 수도 있습니다.)

언급URL : https://stackoverflow.com/questions/34491244/environment-variable-is-too-large-on-windows-10

반응형