1. 셸(SHELL) 확인 방법 |
보통 터미널창에서 사용하는 셸을 '로그인셸'이라고 합니다.
현재 사용 중인 셸이 무엇인지를 알려주는 셸 변수 SHELL을 echo 명령어로 확인할 수 있습니다.
$ echo $SHELL
/bin/bash
일반적으로 FreeBSD는 tcsh, 리눅스와 Mac은 bash를 로그인셸로 사용합니다.
고성능을 지원하는 zsh로 있습니다.
로그인셸과 셸 스크립트를 실행하는 셸은 각각 별도이므로 같지 않아도 됩니다.
하지만 tcsh처럼 C셸 계열의 로그인셸을 이용할 때는 명령행에서 쓰는 문법과 셸 스크립트 문법이 일치하지 않으니 주의해야 합니다.
2. 로그인 프롬프트 |
echo 명령어 앞에 있는 $ 기호는 셸 프롬프트 기호입니다. 이것은 셸이 '지금 명령어 입력을 기다리고 있습니다. 뭔가 입력하세요'라고 제촉한다는 뜻에서 프롬프트(prompt)라고 부릅니다.
셸 프롬프트는 사용자가 자유자재로 변경할 수 있어 환경 설정에 따라 사용하는 기호가 다를 수 있습니다. 하지만 보통은 sh, bash 같은 B셸 계열에서는 일반 사용자는 $, root 사용자는 #을 사용합니다.
한편, tcsh 같은 C셸 계열은 일반 사용자에 %를 주로 사용합니다.
3. 셸 스크립트 작성법 |
셸 스크립트는 일반적으로 vi(vim)이나 이맥스(emacs)를 사용하짐나 지에디터(gedit) 같은 GUI 에디터를 써도 됩니다.
셸 스크립트 파일명은 자유롭게 지정 가능하짐나 관례적으로 확장자를 .sh를 사용하므로 특별한 이유가 없는 한 .sh를 사용하는게 좋습니다. 또한, 파일명에 한글이나 공백문자가 들어가면 문제가 발생하므로 피하는게 좋습니다.
파일 확장자가 없을 때는 셸 스크립트인지 일반적인 실행 파일인지 구분이 어렵습니다. 그럴 때는 file 명령어로 대상 파일 형식을 확인합니다. 아래와 같이 script 파일의 형식을 확인할 결과 shell script로 표시되는 것을 확인할 수 있습니다.
$ file script
script: Bourne-Again shell script text executable
$ file command
command: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
셸 스크립트를 작성했으면 실행하기 전에 문법을 확인하는 -n 옵션을 사용하기 바랍니다. -n 옵션을 사용하면 셸은 스크립트를 한 줄씩 읽어서 해석하지만 실행하지는 않습니다. 따라서 작성한 스크립트에 문법 에러가 없는지 실행하기 전에 확인할 수 있습니다.
$ sh -n script.sh
$ <- 문법 에러가 없으면 아무것도 출력되지 않음
$ sh -n script.sh
script.sh: line 6: syntax error: unexpected end of file <- 문법 에러가 있으면 에러가 표시됨
4. 셸 스크립트 실행 방법 |
셸 스크립트를 실행할 때 우선 파일에 실행 권한을 부여해야 합니다.
아래와 같이 chmod 명령어로 실행 비트를 지정하는 +x 옵션을 이용합니다.
$ chmod +x script.sh
chmod 명령어는 퍼미션을 세 자리 8진수로 설정할 수 있습니다.
명령행에서 셸 스크립트를 실행할 때 유닉스라면 보통 현재 디렉터리가 경로에 들어있지 않으므로 명시적으로 경로를 지정해도 되지만 현재 디렉터리를 의미하는 ,/를 앞에 붙여서 자주 사용합니다.
# 전체 경로를 지정해서 실행
$ /home/park/script.sh
# 현재 디렉터리를 의미하는 ./를 붙여서 실행
$ ./script.sh
또한 집계 처리나 감시처럼 정기적으로 실행하는 셸 스크립트는 명령행에서 직접 실행하기보단 cron으로 자동 실행하는 경우가 많습니다.
'IT 이야기 > Linux 셸 스크립트' 카테고리의 다른 글
[Linux 셸 스크립트] 사용자 인터페이스 - 003 키보드에서 사용자 키 입력을 획득해서 변수값으로 이용하기 (0) | 2021.03.02 |
---|---|
[Linux 셸 스크립트] 사용자 인터페이스 - 002 키보드에서 Ctrl +c를 입력했을때 현재 상태를 출력하며 종료하기 (0) | 2021.03.02 |
[Linux 셸 스크립트] 사용자 인터페이스 - 001 명령어 옵션 처리하기 (0) | 2021.02.28 |
bash 설치 (0) | 2021.02.19 |
셸 스크립트 변수명 (0) | 2021.02.19 |
댓글