/etc/profile, ~/.bash_profile, ~/.profile, ~/.bash_login
나는 새 셸을 열 때 실행되는 Ubuntu의 시작 스크립트( 로그인 셸과
/etc/bash.bashrc, ~/.bashrc
비로그인 셸용) 에 대해 배웠습니다 . Ubuntu를 실행하는 컴퓨터가 있고 해당 컴퓨터의 순서가 이와 일치합니다.
그러나 MacOS의 경우 파일과 실행 순서가 다른 것으로 보입니다. 홈 디렉토리에는 또는 이 /etc/bash
없습니다 . 가장 이상한 점은 이 모든 파일에 echo 문을 넣을 때 Terminal.app을 열 때마다 두 파일을 모두 클릭한다는 것입니다. 로그인 셸에 있는 경우 첫 번째 셸을 클릭하면 안 되나요? 아래를 참조하세요. 처음 세 줄은 내 에코 문이고, 네 번째 줄은 로그인 셸에 있다는 확인입니다./etc/bash.bashrc
~/.profile
~/.bash_login
/etc/profile
/etc/bash
In /etc/profile
In /etc/bashrc
In ~/.bash_profile for user: davidkennell
Davids-MacBook-Pro:~ davidkennell$ shopt login_shell
login_shell on
지금까지 내가 내린 결론은 Mac의 쉘 시작 스크립트는 둘 다 Unix 기반임에도 불구하고 Ubuntu의 것과 완전히 다르다는 것입니다. Mac에서 로그인/비로그인 셸을 초기화할 때 어떤 파일이 어떤 순서로 실행되는지에 대한 정보는 어디서 얻을 수 있나요?
답변1
이것은 (대부분)에 설명되어 있습니다.시작 파일에 대한 Bash 매뉴얼 섹션.
간단히 말해서:
/etc/profile
로그인 쉘로 획득그런 다음 사용 가능한 첫 번째
~/.bash_profile
,~/.bash_login
및 을 가져옵니다~/.profile
.우분투에는 기본적으로 또는 가 없으므로
~/.bash_profile
소스입니다. 쉘이 bash일 때 우분투(뭐, 데비안)의 소스 코드:~/.bash_login
~/.profile
~/.profile
~/.bashrc
# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
~/.profile
그러나 이는 다른 배포판이나 운영 체제에서는 그렇지 않은 경우가 많습니다.데비안(및 우분투)은 다음을 사용합니다.특별한 옵션활성화하려면
/etc/bash.bashrc
이 기능은 macOS에서는 사용되지 않습니다. 대신 적어도 Catalina에서는/etc/profile
소스/etc/bashrc
(Ubuntu와 유사~/.profile
)는 다음과 같습니다.# cat /etc/profile # System-wide .profile for sh(1) if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi if [ "${BASH-no}" != "no" ]; then [ -r /etc/bashrc ] && . /etc/bashrc fi