내 .bashrc 파일이 .profile에서 읽히지 않는 이유는 무엇입니까?

내 .bashrc 파일이 .profile에서 읽히지 않는 이유는 무엇입니까?

.profile파일에는 다음 줄이 있습니다.

# source bashrc if it exists
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

내 파일이 존재하는지 확인하세요 .bashrc(존재하는 경우). 또한 어떤 이유로 인해 다르게 동작하는 환경을 설정하기 위해 새 컴퓨터에서 실행하는 설정 스크립트도 있습니다.

설정 스크립트가 끝나면 다음이 있습니다.

# read .profile
source "$USERDIR/.profile"

내 홈 디렉토리를 가리 킵니다 $USERDIR. .profile이 스크립트가 실행될 때 ".profile sourced"를 에코하고 스크립트가 완료되면 인쇄하기 때문에 올바르게 소스가 제공된다는 것을 알고 있습니다 .

그러나 ( 이 설치 파일에서 시작하는 경우) .bashrc읽혀지지 않습니다 . 타이핑만 하면 잘 작동하기 때문에 왜 그런지 모르겠습니다 ..profile.profilesource .profilebash

.bashrc내 rc 파일의 에코 라인은 .profile이 설정 스크립트에서가 아니라 직접 가져올 때만 에코되기 때문에 실행되지 않는다는 것을 알고 있습니다 . .bashrc스크립트를 가져오려고 하면 if [ -f ~/.bashrc ].profile과 동시에 생성되었기 때문에 스크립트가 존재합니다(따라서 실행해야 합니다).

답변1

단계별로. 에 추가하세요.profile

# source bashrc if it exists
if [ -f ~/.bashrc ]; then
    echo ".profile is sourcing " ~/.bashrc
    source ~/.bashrc
fi

그런 다음 bash를 login:으로 호출하면 bash -l충분합니다.

.profile is sourcing /home/user/.bashrc다음 줄이 인쇄되었습니까?

그렇다면 문제는 다음과 같습니다.

  • 다음 파일이 존재합니까? ~/.bash_profile, ~/.bash_login
  • 이 옵션으로 bash가 호출됩니까 --noprofile?
  • 또는 설정 스크립트를 사용하십시오.

그렇지 않은 경우 문제는 .profile및 또는 에 있습니다 .bashrc.

  • 사용자 디렉터리로 ~ 대신 $HOME을 사용해야 할 수도 있습니다.
  • 대화식으로 실행되지 않을 때 실행을 방지하는 bashrc 행이 있을 수 있습니다.

    # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
    

답변2

$USERDIR내 홈 디렉토리를 가리킵니다 .

정확히 어디를 가리키고 있나요 $HOME? Bash에서는 ~항상 어떤 지점으로든 확장하세요 $HOME. 올바르게 설정되지 않아 할 수 없는 경우에는 source ~/.profile을 (를) 수행할 수 없습니다 .$HOME$USERDIR/.profilesource ~/.bashrc

관련 정보