cygwin이 Windows HOME 환경 변수를 무시하도록 할 수 있습니까?


6

EGit 설치의 일환으로 Windows에서 HOME 환경 변수를 설정해야했습니다. 이로 인해 cygwin은 Windows의 HOME 환경 변수를 / etc / passwd의 값보다 더 중요하게 생각하는 문제가 발생했습니다. 결과적으로 cygwin은 cygwin의 HOME 디렉토리가 이전 위치에서 Windows 사용자 프로파일 폴더로 이동했다고 생각합니다. 내 사용자 프로필 폴더가 이미 충분히 어수선하여 cygwin 파일을 별도로 유지하고 싶지만 그렇게 할 수없는 것 같습니다.

cygwin이 HOME 환경 변수 대신 / etc / passwd의 값을 사용하도록하는 방법이 있습니까?

답변:


6

/ etc / profile을 편집하고 라인을 변경하십시오

# Set the user id
USER="$(id -un)"

# Set the user id
USER="$(id -un)"

# Set user home dir
HOME=$(eval echo "~$USER")

Cygwin은 항상 / etc / passwd의 값을 사용하도록합니다. 이것은 Cygwin.bat를 사용하는 것보다 낫습니다. 이는 모든 로그인 쉘이 어떻게 생성 되든지 상관없이 적용되기 때문입니다.


대안 : HOME=$(awk -F: "/^$USER:/ { print \$6 }" /etc/passwd)또는HOME=$(eval echo "~$USER")
Keith Thompson

당신 cat은 불필요합니다. 당신은 변경할 수 있습니다 cat /etc/passwd | fgrep "$USER"fgrep "$USER" /etc/passwd. 또한 사용자 이름 /etc/passwd이 다른 사용자 이름이나 다른 필드의 일부로 다른 곳에 나타날 경우 명령이 제대로 작동하지 않을 수 있습니다 .
Keith Thompson

HOME=$(eval echo "~$USER")방법 을 사용하도록 답변이 업데이트되었습니다 . 정말 멋지다, 고마워
Lily Finley 2016 년

3

cygwin.bat의 일반적으로 Cygwin에서 쉘을 시작하는 데 사용되는 파일은 홈페이지에 무엇을해야 할 수정할 수 있습니다. 시도해 볼 수 있습니다 :

set HOME=

이것은 문서와 경험에 따라 실제로 cygwin이 볼 수 없도록 % HOME %을 설정 해제해야합니다. cygwin은 기본적으로 $ HOME을 / etc / passwd의 값으로 설정하므로 (HOME이 환경을 상속하는 상위 프로세스에서 설정되지 않은 경우) 원하는 결과를 가져와야합니다.

내가 말하고 있음을 주목하십시오

set HOME=

실제로 설정된 env 변수에서 HOME을 제거합니다. 예상대로 HOME을 널 문자열로 설정 한 다른 결과는 아닙니다 (그러나 환경에 그대로 두십시오).


1

시도해 볼 수있는 몇 가지 사항은 다음과 같습니다.

  1. cygwin.batset HOME=원하는 디렉토리로 편집하십시오 .

  2. / etc / profile ( C:\cygwin\etc\profile)을 편집 cd "${HOME}"하고 원하는 디렉토리로 변경하십시오 .

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