셸(SHELL) 확인, 로그인 프롬프트, 셸 스크립트 작성법, 셀 스크립트 실행 방법
본문 바로가기
IT 이야기/Linux 셸 스크립트

셸(SHELL) 확인, 로그인 프롬프트, 셸 스크립트 작성법, 셀 스크립트 실행 방법

by 찬찬이 아빠 2021. 2. 19.
반응형
  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으로 자동 실행하는 경우가 많습니다.

반응형

댓글