본문 바로가기
IT/리눅스 쉘 스크립트

[shell script #1] 리눅스 쉘 스크립트 실행 sh 파일 만들기

by 꾸꾸웍스 2022. 4. 7.
반응형

리눅스 쉘 스크립트 실행 파일을 만드는 방법에 대한 내용으로 리눅스 sh 실행 파일을 만들어 쉘 스크립트를 작성하는 단계로 리눅스 쉘 스크립트 만들기 기초단계입니다. 아래 목차 내용대로 순서대로 따라 하시면 초보자도 쉽게 리눅스 실행파일부터 쉘 스크립트 실행 방법을 순서대로 배울 수 있습니다.

 

※ 목차 구성
1) 쉘 스크립트(shell script)란?
  1-1) 쉘(shell) 기본 개념
  1-2) 쉘 스크립트(shell script) 장점 및 활용
  1-3) 쉘(shell) 종류
2) 리눅스 실행파일 만들기
3) 리눅스 sh 실행 권한 부여

4) 리눅스 쉘 스크립트 쉘 선언
  4-1) 리눅스 쉘 확인
  4-1) 리눅스 쉘 선언
5) 리눅스 쉘 스크립트 실행 4가지 방법
6) 쉘 스크립트 실행 총정리 및 요약

 

반응형

 

쉘 스크립트(shell script)란?

쉘 스크립트 실행하기 위해서는 쉘에게 어떠한 명령을 할지 스크립트를 파일 형식을 '.sh' 파일 확장자로 작성하여 알려주는 것입니다. 리눅스 실행파일 만들 때 확장자를 sh 파일로 해주는 것은 리눅스 사용자에 ASCII test 실행파일이라는 것의 암묵적인 약속입니다. 즉, 리눅스 쉘 스크립트 만들 때 되도록 확장자를 '.sh'를 붙여서 쉘 스크립트 실행파일을 생성합니다.

 

[root@server ~] # ls -l
total 4
-rwx------ 1 root root 1949 Nov 11  2021 test_script.sh

[root@server ~] # file test_script.sh
test_script.sh: Bourne-Agin sheel script, ASCII text executable

 

쉘 스크립트(shell script)는 일반적인 프로그램 언어와는 달리 기본 명령어를 기반으로 하며 몇 가지 문법을 가지고 사용자가 쉽게 작성할 수 있습니다. 리눅스에서 shell script를 작성하여 실행파일로 만들어 사용하면 명령 줄 인터페이스에 수동으로 입력해야 하는 여러 명령을 자동으로 실행할 수 있습니다.

 

쉘(shell) 기본 개념

리눅스 쉘 구조 사진리눅스 쉘 구조 사진2
리눅스 쉘 기본 개념

쉘은 커널(Kernel)과 사용자 간의 다리 역할을 하는 것으로 사용자로부터 명령을 받아 명령을 해독하고 프로그램을 실행하는 역할을 합니다. 즉, 사용자가 사용자 프로그램(에디터, 서버, x 윈도, 터미널 등..)을 이용해 명령어를 입력하면 사용자가 이용하는 쉘이 명령을 받아 커널에 전달해 줍니다.

 

커널은 하드웨어를 감싸고 있고 하드웨어를 직접적으로 제어하는 역할을 하며 컴퓨터가 이해할 수 있는 기계어를 통해 하드웨어에게 전달해 주는 역할을 합니다.

 

쉘 스크립트(shell script)의 장점 및 활용

  • 반복되는 작업을 자동화하기 위해 스크립트 파일 형태 작성.
  • 다른 프로그래밍 언어의 같은 코드로 쓰인 것보다 훨씬 더 빠른 경우가 많다.
  • 컴파일 단계가 없기 때문에 스크립트는 디버깅을 하는 동안 빠르게 실행할 수 있다.
  • 스크립트의 내용을 모르는 사용자도 실행할 수 있도록 할 수 있다.
  • 모니터링, 데이터 백업, 복구, 보안, 인증 등 여러 상황에서 많이 활용된다.

 

 

쉘(shell) 종류

쉘의 종류에는 기본적으로 5가지가 있으며 사용자에 따라 선호하는 쉘은 다르지만 가장 널리 쓰이는 bash쉘이 대표적입니다.

  • Bourne shell
    - 개발자는 '스티브 본'으로 쉘의 종류는 sh 쉘입니다
    - 최초의 쉘이며 대부분 리눅스에 설치되어 있습니다
  • C chell
    - 개발자는 '빌 조이'로 쉘의 종류는 csh 쉘입니다.
    - Bourne shell의 사용성을 높이고 한층 더 강력해진 쉘로 C언어를 기반으로 강력한 프로그램 작성 기능을 높였습니다.
  • tee-see-shell
    - 개발자는 '카네기 멜런 대학교'에서 개발했으며 쉘 종류는 tcsh 쉘입니다.
    - 카네기 멜런 대학교의 학생들이 개발하였으며 C shell에서 명령 행 완성과 명령 행 편집 기능을 추가하였습니다.
  • Z shell
    - 개발자는 '폴 폴스타드'로 쉘 종류는 zch 쉘입니다.
    - 확장형 bourne shell로 많은 개성 사항들이 갖추어져 있습니다.
  • Bourne-again shell
    - 개발자는 '브라이언 폭스'로 쉘 종류는 bash 쉘입니다.
    - 현시대에 가장 많이 쓰이는 쉘로 GNU 운영체제와 리눅스, 맥 OS 등 기본 쉘로 채택되어있고 C shell과 bourne shell의 기능들이 많이 포함되어 있습니다.

 

리눅스 실행파일 만들기

쉘 스크립트 실행하기 위해 리눅스 쉘 스크립트 실행파일을 만들어야 됩니다. 파일을 생성하는 방법은 여러 가지 방법이 있지만 touch 명령어를 이용하여 test_script.sh 파일명으로 빈 파일을 만들어 보겠습니다.

touch test_script.sh

 

root@server # ls -l
total 0

root@server # touch test_script.sh

root@server # ls -l
total 0
-rw-r--r-- 1 root root 0 Apr  4 12:17 test_script.sh

※ 주의사항

앞서 설명했듯이 리눅스 실행 파일의 확장자는 '.sh'로 sh 파일로 생성해야 됩니다. 리눅스를 사용하는 사용자들의 약속으로 .sh의 확장자를 가진 파일은 응용 프로그램 또는 스크립트 작성된 파일로 인식할 수 있기 때문이다.

 

리눅스 sh 실행 권한 부여

리눅스 sh 파일의 test_script.sh 파일을 만들었으면 실행할 수 있는 권한을 부여해야 실행파일 내용을 작성 후 쉘 스크립트 실행을 할 수 있습니다. chmod 명령어를 이용하여 실행 권한을 부여하면 'test_script.sh' 파일의 파일 소유자에 x 권한이 표시됩니다. 참고로 리눅스 내에 x권한이 추가되면 파일명 색이 초록색으로 변하게 됩니다.

chmod 755 test_script.sh

 

root@server # ls -l
total 0
-rw-r--r-- 1 root root 0 Apr  4 12:17 test_script.sh

root@server # chmod 755 test_script.sh

root@server # ls -l
total 0
-rwxr-xr-x 1 root root 0 Apr  4 12:17 test_script.sh

chmod의 옵션 755에 대한 설명

  • chmod 명령어는 파일의 권한을 변경하는 명령어입니다.
  • 파일 소유자(rwx), 그룹(rwx), 그 외 사용자(rwx)의 권한을 수정합니다.
  • r은 8진수로 숫자 4, w는 8진수로 숫자 2, x는 8진수로 숫자 1입니다.
  • 즉, 755는 파일 소유자 rwx와 그룹 r-x와 그 외 사용자 r-x로 권한을 수정합니다.

 

 

리눅스 쉘 스크립트 쉘 선언

리눅스 test_script.sh의 파일 생성 후 쉘 스크립트 실행 권한을 부여하였으면 리눅스 쉘 스크립트 만들기 위하여 파일 내용 첫 번째 줄에 본인이 사용하고 있는 쉘 선언을 해야 됩니다.

리눅스 쉘 확인

리눅스 쉘 스크립트 실행하기 위해 실행파일에 첫 번째 줄에 사용하고 있는 쉘을 선언해야 되는 데 사용하고 있는 쉘 확인하는 방법은 여러 가지지만 echo 명령어를 이용하여 환경변수로 확인하는 방법입니다.

echo $SHELL

 

root@server # echo $SHELL
/bin/bash

리눅스 쉘 선언

vi test_script.sh

쉘 스크립트 실행 파일 test_script.sh를 vi 또는 vim 편집 명령어 또는 다른 편집 툴을 사용하여 #!/bin/bash 내용을 작성합니다. vi 명령어를 실행하여 키보드의 i를 누르면 INSERT모드(입력 모드)로 전환되어 내용을 입력 후 반드시 ESC를 눌러 명령 모드로 다시 전환 후 :wq를 입력하고 빠져나옵니다. 

 

1번 줄에는 #!/bin/bash 3번째 줄에는 echo "Hello word"를 입력하여 Hello word를 출력하는 쉘 스크립트 실행 파일을 만듭니다.

root@server # cat test_script.sh
#!/bin/bash

echo "Hello word"

※ #!/bin/bash의 의미

  • '#!'의 의미는 스크립트를 실행할 쉘을 지정하는 선언문입니다.
  • /bin/bash의 의미는 bash명령의 절대 경로입니다.
  • 즉, /bin/bash의 쉘로 스크립트를 작성하겠다는 선언을 한 것입니다.

 

300x250

 

리눅스 쉘 스크립트 실행 4가지 방법

리눅스 실행파일을 만들고 스크립트 내용이 만들어졌다면 리눅스 쉘 스크립트 실행방법은 상대 경로와 절대 경로 또는 sh와 bash 명령어로 실행하는 4가지의 방법이 있습니다.  이외의 방법에는 실행파일 경로를 PATH로 등록하여 명령어 자동완성을 하는 방법은 다음 포스팅에서 다루고 우선 4가지의 방법으로 쉘 스크립트 실행하는 방법에 대해 다루겠습니다. 

### 상대경로 쉘 스크립트 실행
root@server # ./test_script.sh
Hello word

### sh 명령어로 쉘 스크립트 실행
root@server # sh test_script.sh
Hello word

### bash 명령어로 쉘 스크립트 실행
root@server # bash test_script.sh
Hello word

### 절대경로로 쉘 스크립트 실행
root@server # /home/test/user/testdir/test_script.sh
Hello word

다만 절대 경로가 아닌 명령어나 상대 경로로 실행할 때는 본인이 위치한 디렉터리의 위치를 파악하고 있어야 됩니다. 실행파일이 위치한 디렉터리가 아닌 엉뚱한 디렉토리에서 쉘 스크립트 파일을 실행하면 No such file or directory라는 오류가 발생할 수 있습니다.

 

쉘 스크립트 실행 총정리 및 요약

  • 쉘 스크립트는 명령어를 기반으로 하며 '.sh'라는 확장자로 지정해 준다.
  • 쉘 스크립트를 응용하여 활용하면 작업을 자동화하기 편리하다
  • 쉘 스크립트의 첫 번째는 실행파일을 만들어야 한다.
  • 실행파일을 만들기 위해서는 x 권한이 필요하다.
  • 쉘 스크립트 파일 첫 번째 줄에는 어떠한 쉘을 사용할지 선언을 해야 한다.
  • 쉘 스크립트 실행 방법에는 여러 가지가 있지만 디렉토리 경로를 잘 알고 있어야 된다.

 

리눅스 쉘 스크립트를 위한 실행파일 만들기를 알아보았습니다. 기본적인 사항들이라 규칙을 기준으로 해서 설명을 드렸는데요 제일 우선시하는 개념이기 때문에 리눅스를 처음 사용해보는 입문자용으로 설명을 드렸습니다. 앞으로 쉘 스크립트(shell script)의 기초, 활용, 응용 편으로 많은 글을 작성하도록 하겠습니다.

 

 

반응형
그리드형

댓글