Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

.bash_profile, .bashrc, .bash_login, .profile 및 .bash_logout의 실행 순서

이 문서에서는 다음 파일이 실행되는 순서를 설명합니다.

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc
  • ~/.bash_login
  • ~/.프로필
  • ~/.bash_logout

대화형 로그인 셸의 실행 순서

다음 의사 코드는 이러한 파일의 실행 순서를 설명합니다.

execute /etc/profile
IF ~/.bash_profile exists THEN
 execute ~/.bash_profile
ELSE
 IF ~/.bash_login exist THEN
 execute ~/.bash_login
 ELSE
 IF ~/.profile exist THEN
 execute ~/.profile
 END IF
 END IF
END IF

대화형 셸에서 로그아웃할 때 실행 순서는 다음과 같습니다.

IF ~/.bash_logout exists THEN
 execute ~/.bash_logout
END IF

/etc/bashrc는 아래와 같이 ~/.bashrc에 의해 실행됩니다.

# cat ~/.bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

비로그인 대화형 셸의 실행 순서

비 로그인 대화형 셸을 시작하는 동안 실행 순서는 다음과 같습니다.

IF ~/.bashrc exists THEN
 execute ~/.bashrc
END IF

참고: 비대화형 셸이 시작되면 ENV 환경 변수를 찾고 ENV 변수에 언급된 파일 이름 값을 실행합니다.

<센터>

실행 순서 테스트

실행 순서를 테스트하는 방법 중 하나는 이러한 파일에 다른 PS1 값을 추가하고 셸에 다시 로그인하여 Linux 프롬프트에서 선택한 PS1 값을 확인하는 것입니다. 또한 앞서 PS1을 사용하여 Linux 프롬프트를 기능적이고 세련되게 만드는 방법에 대해 논의했습니다.

1. /etc/profile이 실행됩니다. /etc/profile에 다음 PS1 행을 추가하고 다시 로그인하여 Linux 프롬프트가 /etc/profile 내부에 설정된 PS1 값으로 변경되는지 확인합니다.

# grep PS1 /etc/profile
PS1="/etc/profile> "

[Note: re-login to see the prompt change as shown below]
Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2
/etc/profile>

위의 항목이 제대로 작동하려면 ~/.bash_profile에 PS1이 없는지 확인하세요.

2. ~/.bash_profile이 실행됩니다: 다음 PS1을 ~/.bash_profile, ~/.bash_login, ~/.profile 및 ~/.bashrc에 추가하십시오. Linux 프롬프트가 아래와 같이 ~/.bash_profile 안에 설정된 PS1 값으로 변경되는지 확인하려면 다시 로그인하세요.

/etc/profile> grep PS1 ~/.bash_profile
export PS1="~/.bash_profile> "

/etc/profile> grep PS1 ~/.bash_login
export PS1="~/.bash_login> "

/etc/profile> grep PS1 ~/.profile
export PS1="~/.profile> "

/etc/profile> grep PS1 ~/.bashrc
export PS1="~/.bashrc> "

[Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next.
So, it took the PS1 from ~/.bash_profile as shown below.
It also did not execute ~/.bash_login, as ~/.bash_profile exists]
Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2
~/.bash_profile>

3. ~/.bash_login이 실행됩니다. .bash_profile의 이름을 다른 이름으로 바꿉니다. Linux 프롬프트가 아래와 같이 ~/.bash_login 내부에 설정된 PS1 값으로 변경되는지 확인하려면 다시 로그인하세요.

~/.bash_profile> mv .bash_profile bash_profile_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile, it executed ~/.bash_login]
Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2
~/bash_login>

4. ~/.profile이 실행됩니다. .bash_login의 이름을 다른 이름으로 바꿉니다. Linux 프롬프트가 아래와 같이 ~/.profile 내부에 설정된 PS1 값으로 변경되는지 확인하려면 다시 로그인하세요.

~/.bash_login> mv .bash_login bash_login_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile]
Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2
~/.profile>

5. ~/.bashrc는 비 로그인 셸 테스트를 위해 실행됩니다. . 실행 bash"는 명령 프롬프트에서 아래와 같이 .bashrc를 호출하는 또 다른 비 로그인 셸을 제공합니다.

~/.profile> bash

[Note: This displays PS1 from .bashrc as shown below.]
~/.bashrc> exit
exit

[Note: After exiting from non-login shell, we are back to login shell]
~/.profile>


이 기사가 마음에 들면 del.icio.us에 북마크하세요. 그리고 거꾸러뜨림 .