Cygwin이 Windows 홈에서 시작하기 때문에 Cygwin .bashrc가 소스가 아님


9

참고 : 문제에 대한 업데이트는 아래의 두 번째 편집을 참조하십시오.

Cygwin은 지난 주까지 나를 위해 잘 작동했습니다. 이제 .bashrc는 소스가되지 않습니다. 무언가를 설치했거나 무언가를 변경했지만 문제의 원인을 정확히 기억할 수 없습니다. Cygwin을 시작할 때 Windows 홈에 있으며 별칭이 작동하지 않습니다. .bashrc를 수동으로 소싱해야합니다. 다음은 Cygwin.bat입니다.

@echo off

C:
chdir C:\cygwin\bin

set CYGWIN=tty notitle glob

bash --login -i

어떤 아이디어?

편집 : 내 .bash_profile에는 다음이 포함되어 있습니다.

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

EDIT2 : 중요! Cygwin을 시작하면 Windows 홈 폴더에서 시작됩니다. .bash_profile과 .bashrc를이 폴더에 넣으려고 시도했으며 올바르게 소스되었습니다! 이는 Cygwin이 일반 Cygwin 홈 폴더가 아닌 Windows 홈 폴더에서 시작하는 이유를 파악하기 위해 문제가 줄 었음을 의미합니다.

EDIT3 : grep Gulshan / etc / passwd / 실행 결과

$ grep Gulshan /etc/passwd
Administrator:unused:500:513:U-Gulshan-HP\Administrator,S-1-5-21-1235613160-4193452482-2032876723-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-Gulshan-HP\Guest,S-1-5-21-1235613160-4193452482-2032876723-501:/home/Guest:/bin/bash
Gulshan:unused:1000:513:U-Gulshan-HP\Gulshan,S-1-5-21-1235613160-4193452482-2032876723-1000:/home/Gulshan:/bin/bash

bash 쉘이 시작되고 Windows 홈 디렉토리에 넣으면 무엇을 echo $HOME인쇄합니까?
Keith Thompson

Cygwin 홈이 아닌 Windows 홈과 에코됩니다.
gsingh2011

그러나 Cygwin 구문을 사용하는 것이 맞습니까? ( /cygdrive/c/Users/foo대신 C:\Users\foo)
Keith Thompson

예, Cygwin 구문을 사용합니다.
gsingh2011

HOME=/home/yourname bash -l터미널 프롬프트에서 입력하면 어떻게됩니까 ? 내가 옳다면, 이것은 제대로 작동하는 쉘을 제공해야합니다. 이것은 해결책이 아니라 진단 또는 최선의 해결 방법입니다. 우리는 여전히 왜 당신의 $HOME잘못이 처음 인지 알아 내야합니다 . 근본적인 문제는 $HOME; bash가 올바르게 작동합니다.
Keith Thompson

답변:


9

Cygwin에서 자주 묻는 질문 방법을 설명 $HOME설정 :

Windows에서 Cygwin을 시작할 때 HOME우선 순위가 낮은 순서로 다음과 같이 결정됩니다.

  • HOME POSIX 형식으로 변환 된 Windows 환경에서.
  • 의 항목 /etc/passwd
  • /home/USERNAME

네트워크 (telnet, ssh, ...)에서 Cygwin을 사용하는 경우에서 HOME설정됩니다 /etc/passwd.

가와 HOME같은 값으로 설정되어 있으면 /cygdrive/cWindows에서 설정되었을 수 있습니다. DOS 명령 창을 시작하고 입력 set HOME하여이 경우인지 확인하십시오.

공유 드라이브에 대한 액세스는 네트워크에서 시작할 때 종종 제한되므로 도메인 사용자는 HOMEWindows 환경 (공유 드라이브)과 /etc/passwd(로컬 드라이브) 가 다른 것을 원할 수 있습니다 . ssh /etc/passwd는 무시하면서 만 고려 HOME합니다.

최선의 추측은 /etc/passwd파일을 엉망으로 만들었다는 것입니다 . (Windows 홈 디렉토리는 %USERPROFILE%아닙니다 %HOME%.)

무엇을 grep USERNAME /etc/passwd인쇄 USERNAME합니까 (사용자 이름으로 대체 )?


더 쉽게 읽을 수 있도록 내 질문에 출력을 추가했습니다. 제대로 설정되어있는 것 같습니다. 그러나 % HOME % 변수가 있고 % USERPATH %로 설정되어 있는지 확인하기 위해 Windows 환경 변수를 열었습니다. 제거했지만 문제가 해결되지 않았습니다. 다시 시작해야할까요?
gsingh2011

1
시스템 제어판 또는 Windows 명령 셸에서 set HOME=?를 사용하여 제거 했습니까 ? 시스템 제어판을 사용하는 것이 더 효과적 일 수 있지만 그 후에도 다시 시작해야 할 수도 있습니다.
Keith Thompson

시작 메뉴에서 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭하고 고급 시스템 설정을 클릭 한 다음 환경 변수를 클릭 한 다음 HOME을 제거하여 제거했습니다. 다시 시작해야했습니다. 이제 Cygwin은 올바른 홈 디렉토리를로드합니다. 도와 주셔서 감사합니다.
gsingh2011

1

.profile 또는 .bash_profile이 있으면 로그인 셸에서 제공되며을 전달한 후 로그인 셸을 얻습니다 --login. .profile을 제공하면 bash는 .bashrc 를 제공 하지 않습니다 .

나는 넣으려고 노력했다.

[ -f $HOME/.bashrc ] && source $HOME/.bashrc

.profile에서 도움이되는지 확인하십시오. .bashrc는 다른 비 로그인 쉘 호출에서 여전히 정상적으로 소스되어야합니다.

그리고 -ibash에 전달하지 마십시오 . 당신은 필요하지 않습니다. 당신 -i이 커맨드 라인에서 준 척 해킹의 배쉬 종류 .


내 .bash_profile과 .profile에는 비슷한 코드 줄이 있습니다. 내 업데이트 된 질문을 참조하십시오.
gsingh2011

실례합니다, @Rich Homolka, 왜 그런 말이 필요하지 않은지 알고 싶습니다 -i. 감사.
Sopalajo de Arrierez 2014 년

@SopalajodeArrierez 대화 형 (스크립트는 아니지만 터미널에서 활성화 된) 셸을 사용하는 경우 bash는 -i명령 줄에서 제공 한 것처럼 가장합니다 . bash 쉘 창을 열어 보면 다음 echo $-과 같이 보일 것이다. i(다른 플래그들 중에서)
Rich Homolka

1

git (Windows)을 설치 한 후에도 같은 동작을 경험했습니다.

시스템 설정에서 사용자 변수 HOME = C : \ Users \ me를 찾아이를 HOME = D : \ home으로 재설정했습니다.

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