[Shell Script] 변수나 함수를 외부 파일로 작성

 .(닷) 명령어



여러 셸 스크립트에서 공통된 설정 값이나 함수를 사용하는데 그런 값과 함수를 외부 파일로 정의 하고 싶을 때 사용합니다.

#!/bin/sh

. ./env.sh   #1

nowtime

cp -i -v large-file.tar.gz "$WORK_DIR"

nowtime





해설

이 스크립트는 지정한 작업 디렉터리에 큰 파일을 복사하여 그처리시간을 측정하는 스크립트 예제입니다 .
예시 파일로 large-file.tar.gz 라는 파일을 만들고 진행했습니다 . 

#touch file1 file2 file3 file4 
#tar -zcvf large-file.tar.gz file* 

#1에서 env.sh라는 정의 파일을 .(닷 명령어)으로 받아드립니다 . 
env.sh 의 내용은 다음과 같습니다 . 

WORK_DIR=/var/tmp/myapp/

nowtime() {
    date +%X

}



임시 디렉터리 변수 ($WORK_DIR)와 현재 시간을 date으로 표시하는 함수가 정의 되어있습니다.



.(닷 명령어)의 장점과 단점 


외부 파일을 쓰면 의존관계가 생깁니다 . 

어떤 셸 스크립트를 다른 환경에 이식 할때 읽어들이는 외부 파일도 함께 이동해야 한다는 뜻입니다.

한편 , 셸 스크립트의 좋은 점으로 스크립트 파일 하나를 복사하면 이동이 끝난다는 간편함이 있습니다 .  닷 명령어를 사용하여 발생하는 의존 관계는 이런 간편함을 저해시킵니다 . 

따라서 의존 관계가 싫어서 닷 명령어를 사용하지 않는 사람도 있습니다 . 
팀으로 작업을 할 때나 장기적으로 오래 사용할 스크립트에 대한 방침을 미리 정해야합니다 . 

결과 







파일이 /var/tmp/myapp/으로 이동 되었고 이동 되는 시간도 함께 표시 되었습니다 .