티스토리 뷰
Linux에 오라클을 설치하면 oracle User에 .bash_profile을 설정해야한다. 이 계기로 해당 내용을 정리해본다.
먼저 .bashrc, .bash_profile의 역할을 알아보자.
.bashrc, .bash_profile 역할과 실행시기
두 파일은 특정 유저의 shell 실행환경을 편리하게 설정하기 위해 존재한다.
둘다 shell script file로 Shell 실행시에 자동으로 실행되는 파일 목록들이다.
둘의 차이점은 실행되는 조건이 다르다는 것이다.
실행되는 조건을 알아보자
파일위치
User Home Dirctory에 위치
.bashrc
Shell 실행환경과 상관없이 무조건 실행되는 파일
.bash_profile
Login Shell로 실행할 경우 실행되는 파일
Shell 실행환경
Login shell 과 non-Login shell로 구분된다.
Login shell의 정의를 찿아보면 아래와 같다.
A login shell is a shell given to a user upon login into their user account
로그인시에 유저에게 주어지는 쉘이라고 되어있다.
처음에는 해당 정의가 이상했다. 왜냐하면 OS상에서 당연히 특정 유저로 로그인을 해야되는건데 그것을 왜 궂이 Login shell 이라고 칭하는 것일까 하는 의문 때문이었다.
이 의문을 해결하기 위해서 non-Login shell이 언제 발생하는지를 알아야 했다.
다음 예제들을 통해 두 가지 Shell 실행환경을 자세히 알아보자.
먼저 .bashrc와 .bashprofile이 실행되었다는 것을 알기위해 각 파일 끝에 echo 명령문을 삽입해준다.
.bashrc
echo "oracle User의 .bashrc가 실행되었습니다"
.bash_profile
echo "oracle User의 .bash_profile이 실행되었습니다"
그런다음 Linux 상에서 Terminal 창을 열어보자.
터미널 창을 열자마자 .bashrc가 실행되었다.
응 ? .bash_profile이 실행이 안되었나? 그래서 .bash_profile에 설정된 환경변수 설정이 되었는지 확인해보았다.
.bash_profile에 설정된 환경변수가 적용되어있다.
나는 GUI 환경이다보니 oracle User로 로그인시 적용된 모습을 확인할 수 없었던것 뿐이다.
확실하게 보기 위해서 putty로 ssh 접속을 하여 터미널로 확인하기로 했다.
그렇다. 두 가지 파일이 모두 실행이 되었다. 이로서 Login shell 환경을 알아보았다.
non-Login shell은 어떻게 확인할까? su 명령어를 통해서 확인할 수 있다.
.bashrc만 실행되었다.
다음은 옵션을 추가해서 su 명령어를 실행 해보자.
.bashrc와 .bash_profile 둘 다 실행되었다. "-" 옵션을 알아보자.
su
su -help
-, -l, --login 옵션은 login shell로 만드는 기능이다!
사실 non-Login shell을 확인하기 위해 su 명령어를 통해 확인할 필요가 없었다.
위에서 보았듯이 새터미널 창을 여는 경우는 .bashrc만 적용되는 것을 확인하였기 때문이다.
전체적으로 정리를 해보자.
.bash_profile은 해당 유저로 접속시에 shell이 실행되면서 실행이 된다.
그에 반해 .bashrc는 새로운 shell을 실행할 때마다 실행이 된다.
그렇기에 새 터미널창을 열때마다 .bashrc는 실행이 계속되었지만 .bash_profile은 실행이 되지 않은 것이다.
putty에서는 터미널로 접속하였기 때문에 echo 명령어를 통해 실행되는 모습을 확인할 수 있었으며 GUI환경에서는 출력값은 확인 못했지만 적용되어있는것을 확인할 수 있었다.
이제 구체적으로 말할 수 있다.
Login Shell은 세션연결이 된 직후 Shell 실행 환경이고 non-Login Shell은 세션 연결후에 새로운 Shell을 실행할 때를
뜻하는 것이다.
즉 .bash_profile은 세션 연결시에만 실행이 되며 .bashrc는 shell 실행환경과 상관없이 실행이 된다.
추가정리
bash startup file 목록
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_login
- ~/.profile
- ~/.bash_logout
'Linux' 카테고리의 다른 글
[Linux] >, >>, <, | 간단한 예제 (0) | 2022.08.18 |
---|---|
[Linux] service vs systemctl 차이, /etc/init.d 용도 (0) | 2022.08.17 |
Linux 화면 보호기 해제 (0) | 2022.07.11 |
Linux 사용자 확인 및 삭제 (0) | 2022.07.11 |
su시 .bash_profile 적용 (0) | 2022.07.04 |
- Total
- Today
- Yesterday
- oracle 19c 설치
- postgresql trigger
- express crud
- 스파르타 코딩클럽
- vue 전역 컴포넌트 설정
- postgresql 수정시간 자동 갱신
- postgresql on update current_timestamp
- 강서 운전면허 시험장
- component auto import
- epel/x86_64
- rest api 단건 다건
- rest api crud
- postgresql 외래키
- 오블완
- 1종 적성검사 국가건강검진
- mariadb 외래키 조회
- 외래키 생성
- Oracle Database 19c install
- 티스토리챌린지
- postgresql 트리거
- 1종 적성검사 과태료
- unplugin-auto-import
- rest api 조회 생성 수정 삭제
- epel repo
- 외래키 삭제
- 1종 적성검사 신체검사
- vue 컴포넌트 자동 import
- 외래키 인덱스 생성 구문 쿼리
- 1종 적성검사
- Oracle Database 19C 설치
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |