본문 바로가기
IT/Linux

do not work source command in shell script

by 최고영회 2021. 3. 3.
728x90
반응형
SMALL

.bash_profile 을 이용하여 LD_LIBRARY_PATH 에 필요한 Path를 추가하고

System 을 on/off 하지 않더라도 바로 적용해야 할 경우 command 로 source 를 이용한다.

 

source ~/.bash_profile

또는 이렇게

. ~/.bash_profile

 

install shell script 를 만드는 중 shell script 안에서 .bash_profile 에 application에서 필요한 library path를

LD_LIBRARY_PATH에 추가 한 후 source ~/.bash_profile 을 해 보니 ... 안먹힌다..

많은 구글링을 했지만 적당한 답을 얻지 못했다. (do not work source command in shell script)

 

회사에 서버개발자들이 많아 문의를 해보니 깔끔한 답변을 받을 수 있었다. (여윽시...진즉에 물어볼걸....)

고맙습니다. 양책임님^^

원인

- shell script file 실행 시 실행의 주체가 되는 shell process가 새로운 sub shell process를 생성하여 sub shell 내에서 실행함

- sub shell은 부모쉘과 독립된 메모리를 사용하기 때문에 이 때 등록한 환경변수를 script를 모두 실행하고 부모쉘로 돌아갔을 때 사용할 수 없음

해결방법

- source 명령어를 사용하여 스크립트 파일을 실행

- source install.sh 혹인 . ./install.sh를 통해 script file을 실행하면 새로운 sub shell을 생성하지 않고 기존의 shell에서 script를 바로 실행하므로 적용된 환경변수를 유지할 수 있음

주의사항

- 현재 putty client로 실행한 remote shell을 그대로 사용하기 때문에 script 내에 exit 명령어가 동작하면 세션이 종료됨 (창 닫힘)

728x90
반응형
LIST

'IT > Linux' 카테고리의 다른 글

CentOS Network 설정  (0) 2014.03.25
yum 오류  (0) 2014.01.03
centos java 설치 후 default java 변경  (0) 2013.12.30
Apache 설치 (Cent OS)  (0) 2013.12.26
CentOS 리눅스 yum 사용법  (0) 2013.12.26