본문 바로가기

개발/Languages & Scripts

(Shell)스크립트 작성시, PWD보다는 정의한 BASE_DIR를...

스크립트 작성 관련하여, 블로거가 자주 사용하는 환경변수에 대해 거론하겠다.

 

환경변수 명은 BASE_DIR로 대상 계정이 접속 시, 위치한 디렉터리(절대경로)이다.

 

간단하게 pwd로 정의하면 되지 않나? 라고 생각할 수도 있을 것이다.

 

하지만, 이 글을 작성한 본인도 이슈를 겪어보았기에 해당 글을 작성하는 바이다.

 

pwd(현재위치한경로)로 사용하여 발생하는 간단한 예제를 하위를 참고하며 이야기하겠다.

 


스크립트예제(BASE_DIR)

...더보기

1. 예제 거론전(사전준비)

export ID=`whoami`
export BASE_DIR=`cat /etc/passwd|grep ${ID}|cut -f6 -d ':'`

 

vi ${BASE_DIR}/.bash_profile

## Edit Server Env Setting
export ID=`whoami`
export BASE_DIR=`cat /etc/passwd|grep ${ID}|cut -f6 -d ':'`
export PS1='[`id -nu`@`hostname`:$PWD]# '
export LANG=ko_KR.utf-8
stty erase "^H" kill "^U" intr "^C" eof "^D" susp "^Z" cs8 -ixany -parenb -istrip

 

.bash_profile 내, 환경변수 기입

 

환경변수 적용

source ${BASE_DIR}/.bash_profile 
.bash_profile 환경변수 적용

 

2. 예제 스크립트 작성

mkdir ${BASE_DIR}/test
cd ${BASE_DIR}/test
vi test.sh

 

테스트를 위한 base_dir변수, 각기정의 1번(pwd), 2번(유저절대경로)

 

3. 결과 확인

- 1. 스크립트가 위치한 대상 경로에서 스크립트를 실행 했을 시, (정상)

1: pwd 정의(정상) / 2: user절대경로정의(정상)

- 2. 스크립트가 위치하지 않은 경로에서 스크립트 실행 했을 시, (오류발생)

1: pwd 정의(오류) / 2: user절대경로정의(정상)

 

※결론

스크립트가 실행되는 경로 위치는 대상 디렉터리에서 실행된다는 보장이 없다는 것이다.

그렇기에 스크립트를 작성할 시, 해당 사항에 대해서 반드시 고려해야하며 변수화를 필수로 유의 해야한다.

어째서, 이러한 간단한 내용을 주제로 글을 작성하였는지와 언급하는지에 대해서 구독자중 모를 수도 있을 것이다.

하지만, 실무에서 간혈적으로 발생될 수 있는 간단한 소재조차 크리티컬한 이슈/참사로써 발생될 수 있다는 점을 염두해두자.

(최악의 시나리오, 해당 계정 내 모든 파일 삭제)

 

#- References

(ko)unix_shell

(en)unix_shell

'개발 > Languages & Scripts' 카테고리의 다른 글

[Shell] Date Validate Script  (0) 2019.12.25
JAVA  (0) 2019.09.26