나는 bash가 어떻게 작동하는지 연구해왔고 지금까지 다음을 배웠습니다.
로그인 쉘이 시작되면 아래에 존재하는 첫 번째 파일이 실행됩니다.
~/.bash_profile
, ~/.bash_login
,~/.profile
이 파일은 로그인이 아닌 대화형 셸(또는 하위 셸)이 시작될 때 ~/.bashrc
실행됩니다 .
또한 .profile은 sh와 같은 다른 쉘에서도 실행될 수 있습니다. 이제 내 질문은 .bash_profile과 .bash_login을 갖는 이유가 무엇입니까? 둘 다 동일한 기능을 수행하며 .profile과 달리 .bash_profile과 .bash_login은 모두 bash에서만 읽을 수 있습니다. 내가 아는 유일한 차이점은 .bash_profile이 존재하지 않으면 .bash_login이 실행된다는 것입니다. 그렇다면 왜 거기에 있습니까?
답변1
쉘은 로그인 쉘의 시작 파일 역할 을 하는 쉘에 많은 영향을 미치는 다른 쉘 과 마찬가지로 로그인 쉘이 시작될 때 실행되는 쉘 시작 파일의 이름 역할 을 하는 일부 기능을 가져 csh
옵니다 .bash
.login
ksh
bash
.profile
그러므로 .bash_profile
그 이름은 쉘의 파일에서 빌려온 것이고, 그 이름은 쉘의 파일에서 빌려온 것입니다.ksh
.profile
.bash_login
csh
.login
사용자는 마이그레이션할 다른 셸 계열( 셸 유사 또는 셸 유사) 을 사용 .bash_profile
하거나 의존합니다 ..bash_login
ksh
csh
bash
분명히 요즘 많은 Linux 사용자는 Linux 이외의 쉘을 사용한 적이 없으므로 bash
그들이 사용하는 파일 이름은 시스템 관리자, 교사 선호도 또는 임의성에 따라 달라질 수 있습니다.
및 둘 다 ~/.bash_profile
존재하는 경우 ~/.bash_login
파일은 ~/.bash_login
무시됩니다.
답변2
선택적 스크립트 이름을 사용하면 얻을 수 있는 이점 중 하나~/.bash_login
,대신에~/.profile
, 로그아웃 스크립트에 병렬 이름이 있습니까?~/.bash_logout
, 사용하기로 결정한 경우.
따라서 Bourne이 아닌 Bash를 실행하는 경우 이름 집합 구성의 복잡성이 단순화됩니다.
/etc/profile # system login script
~/.bash_profile # user login script
~/.bash_logout # user logout script
/etc/bash.bashrc # system interactive script
~/.bashrc # user interactive script
이와 관련하여:
/etc/profile # system login script
~/.bash_login # user login script <--sisters +
~/.bash_logout # user logout script <----------+
/etc/bash.bashrc # system interactive script
~/.bashrc # user interactive script
그러나 로그아웃 스크립트를 사용할 계획이 없다면 다른 방법이 더 간단할 수도 있습니다.
/etc/profile # system login script
~/.bash_profile # user login script
/etc/bash.bashrc # system interactive script
~/.bashrc # user interactive script
안타깝게도 구성 이름에 더 이상 이름 대칭이 없습니다...
하지만 다음 심볼릭 링크를 사용하면 이를 더 효과적으로 만들 수 있습니다.
/etc/bash --> /etc/profile # system login script
~/.bash --> ~/.bash_profile # user login script
/etc/bashrc --> /etc/bash.bashrc # system interactive script
~/.bashrc # user interactive script
비파괴적으로 생성:
sudo ln -sT /etc/profile /etc/bash
ln -sT ~/.bash_profile ~/.bash
sudo ln -sT /etc/bash.bashrc /etc/bashrc
# ~/.bashrc (don't change)
또는파일을 새 이름으로 옮긴 다음 백링크하여 이를 보다 적극적으로 되돌릴 수 있습니다.
sudo mv -f /etc/profile /etc/bash && \
sudo ln -sT /etc/bash /etc/profile
sudo mv -f /etc/bash.bashrc /etc/bashrc && \
sudo ln -sT /etc/bashrc /etc/bash.bashrc
mv -f ~/.bash_profile ~/.bash && \
ln -sT ~/.bash ~/.bash_profile
# ~/.bashrc (don't change)
어쨌든, 이제 더욱 통합된 프로필 이름을 갖게 되었습니다., 링크에서 잊어버렸을 때 쉽게 찾을 수 있습니다.
/etc/bash # system login config script
~/.bash # user login config script
/etc/bashrc # system interactive config script
~/.bashrc # user interactive config script
(저는 로그아웃 스크립트를 사용하지 않지만 이름은 다음과 같습니다: /etc/bash.logout
.)