.profile에서 스크립트를 가져오지 못하는 이유는 무엇입니까?

.profile에서 스크립트를 가져오지 못하는 이유는 무엇입니까?

로그인하거나 새 대화형 셸을 열 때마다 실행하고 싶은 실행 가능한 스크립트가 있습니다. 이 실행 파일의 경로를 추가 .profile하고 다음 줄을 추가하여 얻었습니다..profile

source $HOME/bin/wrapper

다시 시작한 후에는 스크립트가 실행되지 않습니다.

.profileFedora를 다시 시작한 후에도 bash가 bash에서 스크립트를 실행하지 않는 이유는 무엇입니까?

편집하다:질문을 더 명확하게 하라

답변1

.profile몇 가지 조사를 한 결과 다음 두 가지 이유로 소싱 스크립트가 작동하지 않는다는 사실을 발견했습니다 .

  1. 새 터미널 세션을 열면 bash는 로그인이 아닌 대화형 셸로 실행됩니다. .profile비대화형 로그인 셸에 대해서만 실행되므로 터미널 세션을 시작해도 실행되지 않습니다 .

  2. 스크립트는 로그인 시간에서 시작되지만 .profile, 로그인 시간과 관련이 없습니다.로그인 시 하위 프로세스로 내보낸 환경 변수를 설정합니다 .profile.원천로그인 시 초기화된 첫 번째 bash 인스턴스에서 시작된 하위 프로세스로 내보낼 수 없는 명령입니다. 즉, 대화형이며 로그인이 아닌 대화형 셸에서 실행되는 유일한 시작 파일 source이어야 합니다 ..bashrc

TL;DR .profile스크립트는 로그인 시 한 번만 가져오고 터미널 세션 환경으로 전달되지 않습니다. 그래서 스크립트를 .bashrc.

위의 질문에 답할 수 있는 능력 ~/.bash_profile이 없습니다 .원천명령이 추가되었습니다.profile

보너스:이러한 이유로 별칭 설정도 작동하지 않을 것이라고 가정합니다. .profile터미널 창에 새 환경이 생성될 때마다 실행해야 하는 명령이기 때문입니다.

답변2

man bash(강조 내) 에서 :

bash가 --login 옵션을 사용하여 대화형 로그인 셸 또는 비대화형 셸로 호출되면 먼저 /etc/profile 파일(파일이 있는 경우)에서 명령을 읽고 실행합니다. 파일을 읽은 후 ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아 이들에서 명령을 읽고 실행합니다.존재하고 읽을 수 있는 첫 번째 항목입니다.

~/.bash_profileJasonwryan이 말했듯이, 아마도 귀하의 콘텐츠가 ~/.profile읽히지 않도록 하나가 있을 것입니다.이 답변~/.profile에서 이 작업을 수행하는 것이 좋습니다 ~/.bash_profile. 실행 가능한 스크립트를 소스 코드로 만들 수도 있습니다 ~/.bash_profile.

살펴보실 수도 있고,배쉬 온라인 매뉴얼.

관련 정보