Windows & Git Bash : Windows % PATH % 시스템 변수를 읽는 Bash PATH


27

최근 제어판-> 시스템-> 고급 시스템 설정-> 환경 변수-> 사용자 변수-> PATH로 이동하여 수동으로 Windows PATH에 디렉토리를 추가했습니다. (Windows 7, 64 비트)

cmd.exe를 재부팅하고 시작한 후 echo %PATH%이것이 작동했음을 나타냅니다. 최근에 출력에 추가 한 디렉토리가 표시됩니다.

그러나 Git Bash를 시작한 후의 출력 echo $PATH에는이 디렉토리가 포함되지 않습니다.

export PATH=$PATH:/c/my/pathbashrc에 추가 할 수 는 있지만 Git Bash는 Windows에서 PATH를 가져와 두 경로에 경로를 추가해야한다는 것을 기억하지 않아도됩니다. 이것이 어떻게 이루어질 수 있습니까?

(보다 일반적인 관련 질문은 Git Bash의 $ PATH를 설정하는 것입니다. 여러 위치에서 여러 항목이 반복되는 것을 볼 수 있습니다. Windows % PATH %에있는 일부는 Git Bash의 $ PATH에 있지만 다른 것은 아닙니다. $ PATH에 닿는 Git Bash 프롬프트가 표시됩니까?)


해당 경로가 중요 할 수 있습니다 C:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin..
Ahmed Fasih 2016 년

답변:


6

msysgit git bash 세션은 script를 사용합니다.이 스크립트 share/WinGit/Git Bash.vbs는 환경 변수에 액세스하거나 수정하지 않습니다 PATH(예 : 관련이없는 vbs 스크립트에서와 같이 )

git bash 세션은 단순히 현재 앞에 추가합니다 PATH.

.:/usr/local/bin:/mingw/bin:/bin:

msysgit과 함께 패키지 된 mingw 세션 bin은 다른 mingw 설치를 고려하지 않을 수 있습니다. 다른 (더 간단한) 디렉토리를 설정하여 확인하고 PATHgit bash 세션에서 여전히 볼 수 있는지 확인할 수 있습니다. 그렇지 않은 경우 PATH에 추가 할 모든 디렉토리 와 관련된보다 일반적인 문제입니다 .


1
이것은 정확하지 않은 것 같습니다. git bash를 시작할 때 경로는 일부 프로세스를 통해 Windows PATH 변수를 분명히 변환하는 일부 프로세스에 의해 설정됩니다. 추가 항목을 추가하는 것만 큼 간단하지 않습니다 : ';' 는 ':'로 변환되고 드라이브 지정자는 디렉토리 이름으로 변환되며 다른 변환도 수행됩니다. 어떤 경우에는이 변환이 잘못 "c:\Program Files\Java\jdk1.8.0_25"\bin되었습니다. 내 Windows 경로가 /c/Program Files/Java/jdk1.8.0_25"/bigit bash 경로 로 변환됩니다 (첫 번째 문자와 마지막 문자가 누락 됨) ... 문제는 어떻게 발생합니까?
Jules

@Jules 실제로 가능합니다. 5 년 만에 많은 변화가있었습니다.
VonC

5

비슷한 문제 (Windows 10의 MSYS2 bash)에 대한 작은 해결 방법이 있습니다.

아이디어는 필요한 경로를 Unix 스타일 경로로 변환하고 .bashrc에서 모두 bash $ PATH에 추가하는 것입니다.

Win PATH에 필요한 경로를 추가하지 마십시오. 대신 MSYS2_WINPATH와 같이 Windows에 새 env var를 작성하고 세미콜론으로 구분 된 모든 Windows 경로 디렉토리를이 변수에 추가하십시오. % MSYS2_WINPATH %를 % PATH %에 추가하십시오.

이제 이것을 .bashrc에 삽입하십시오-

################################## Construct PATH variable ##################################

winpath=$(echo $MSYS2_WINPATH | tr ";" "\n" | sed -e 's/\\/\\\\/g' | xargs -I {} cygpath -u {})
unixpath=''

# Set delimiter to new line
IFS=$'\n'

for pth in $winpath; do unixpath+=$(echo $pth)":"; done

export PATH=$(echo $PATH:$unixpath | sed -e 's/:$//g')
unset IFS
unset unixpath
unset winpath

################################# Constructed PATH variable #################################

git-bash에서 시도했지만 .bashrc에 대한 해결 방법없이 작동했습니다. 감사!
Michael Haidl

잘 들었습니다 :) 천만에요.
anubhav

2

사용자의 PATH 변수가 환경 PATH 변수에 연결된 후 PATH 값이 너무 길면 Windows는 자동으로 사용자 PATH 변수를 연결하지 못합니다.

새 소프트웨어를 설치하고 PATH에 무언가를 추가하여 기존에 설치된 소프트웨어를 손상시킨 후에 쉽게 발생할 수 있습니다. 윈도우 실패!

가장 좋은 방법은 제어판에서 PATH 변수 중 하나를 편집하고 필요없는 항목을 제거하는 것입니다. 그런 다음 새 CMD 창을 열고 "echo % PATH %"에 모든 항목이 표시되는지 확인하십시오.


1

디렉토리를 경로 변수의 시작 부분으로 이동하십시오. p4merge를 설치 한 후 동일한 문제가 발생했습니다. perforce 디렉토리가 경로에 추가되었고 p4merge는 cmd.exe에 의해 발견되었지만 git shell (mingw)은 아닙니다. 결실없는 검색 후, perforce 디렉토리가 내 경로에서 처음 나타나도록 변수를 편집하려고했습니다. 나는 디렉토리의 출력에 포함되어 자식 쉘과, 짜잔을 해고 $ echo $path하고, $ p4mergep4merge을 엽니 다.

왜 그것이 효과가 있는지에 대해서는 알지 못하기 때문에 이것은 일종의 절름발이입니다.

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