이 질문에는 이미 답변이 있습니다.
-
.bashrc가 자동으로 실행되지 않는 이유는 무엇입니까?
답변 13 개
나는 많은 사람들이 왜 이런 명령이 비슷한 지 알아 냈습니다.
Put X to your ~/.bashrc and you can do Y
작동하지 않습니다.
Mac OS X의 bash 시작 파일 (또는 Mac의 Bash 자체)은 ~ / .bashrc 파일을 로그인 쉘 또는 Mac OS X의 터미널 응용 프로그램과 같은 창 시스템에서 생성 된 쉘에서 소스하지 않습니다.
Bash가있는 다른 모든 유닉스 계열 시스템이 이전 에이 작업을 수행했을 때 왜 이것이됩니까?
추신:
시작 파일에 대해 Bash 자체가 말한 것을 발견했습니다 (유용 할 수 있음).
Bash가 대화식 로그인 쉘 또는 –login 옵션을 사용하는 비 대화식 쉘로 호출되면 파일이 존재하는 경우 먼저 / etc / profile 파일에서 명령을 읽고 실행합니다. 해당 파일을 읽은 후 ~ / .bash_profile, ~ / .bash_login 및 ~ / .profile을 순서대로 찾고 존재하고 읽을 수있는 첫 번째 파일에서 명령을 읽고 실행합니다. 이 동작을 막기 위해 쉘을 시작할 때 –noprofile 옵션을 사용할 수 있습니다.
출처 : http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
답변
OSX에서 터미널은 기본적으로 로그인 세션을 시작하므로 .bash_profile 등을 읽습니다 (사용자 이름 및 비밀번호를 요청하는 GUI 로그인 프로세스는 쉘 스크립트를 사용하지 않으며 쉘을 시작하지 않음).
다른 Unices에서 xterm은 기본적으로 비 로그인 쉘을 실행하므로 로그인 세션에서 비밀번호 등을 제공하는 스크립트로 .bashrc를 읽고 로그인 세션을 호출하고 모든 터미널은 이것의 하위 프로세스이며 쉘 환경을 상속합니다.
언급 한 GNU 문서에서
대화 형 비 로그인 셸로 호출
로그인 쉘이 아닌 대화식 쉘이 시작될 때 Bash는 ~ / .bashrc에서 해당 파일이있는 경우 명령을 읽고 실행합니다. –norc 옵션을 사용하여이를 방지 할 수 있습니다. –rcfile 파일 옵션은 Bash가 ~ / .bashrc 대신 파일에서 명령을 읽고 실행하도록합니다.
따라서 일반적으로 ~ / .bash_profile에는 다음 줄이 포함됩니다.
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
로그인 별 초기화 후 (또는 이전)
답변
bash
단지 읽기 .bashrc
에 대한 비 로그인 쉘 :
로그인 쉘이 아닌 대화식 쉘이 시작될 때 bash는 ~ / .bashrc에서 해당 파일이있는 경우 명령을 읽고 실행합니다. –norc 옵션을 사용하여이를 방지 할 수 있습니다. –rcfile 파일 옵션은 bash가 ~ / .bashrc 대신 파일에서 명령을 읽고 실행하도록합니다.
터미널이 bash
로그인 쉘로 시작함에 따라 ( 인스턴스가로 실행되는지 w
확인하기 위해 bash
실행 -bash
) .bashrc
자동으로 읽히지 않습니다.