스크립트

스크립트란?


스크립트와 프로그램의 차이점은 무엇일까요?

셀에서의 스크립트는 하나의 파일 안에 명령어들을 적어두고, 이를 순차적으로 해석하면서 실행하는 것을 말합니다. 리눅스에서 대표적인 스크립트로는 셀 스크립트, perl 스크립트등이 있습니다.

반대로 프로그램은 소스코드를 컴파일하여, 실행파일로 만들어서 구동하는 방법을 말합니다.

  • 셀 스크립트 : 단순한 명령들의 집합
  • 셀 프로그램 : 변수, 조건, 루프등의 제어기능을 추가하여 프로그램 처럼 동작하는 스크립트

서브 셀


현재 로그인된 사용자의 셀을 로그인 셀이라고 합니다. 하나의 셀은 또 다른 셀을 실행하여 동작을 할 수 있습니다. 이때 이를 서브 셀이라고 합니다.

서브셀 진입

hojin@hojin3:~$ /bin/bash
hojin@hojin3:~$

현재 로그인 셀(bash)에서 또 다른 bash 셀을 실행하여, 서브셀 상태가 되었습니다.

서브셀 종료하기

hojin@hojin3:~$ exit
exit

해쉬뱅


스크립트에서 #는 주석을 의미합니다. 하지만, 스크립트 도입부에 다음과 같이 작성한 라인은 Bash Shell에서 특별히 의미가 정해진 것으로 합니다. 이를 셔뱅, 해시뱅 등으로 불리웁니다.

#!/bin/bash

셀 스크립트 작성


셀 스크립트를 작성하는 방법을 알아 봅니다.

쉘 스크립트란

리눅스 명령들을 뫃아 놓은 하나의 파일을 말합니다.

  • 별도로 컴파일하지 않고 텍스트 파일 형태로 셸에서 바로 실행
  • 셸 스크립트는 주로 vi 에디터나 gedit로 작성

쉘 스크립트의 실행

쉘 스크립트를 실행하기 위해서는 파일에 실행 권환을 부여해 주어야만 합니다.

chmod +x 스크립트

스크립트는 기본적으로 첫줄부터 순차적으로 해석하면서 실행이 됩니다.

실행하기 위해서는 스크립트 파일이 위치하는 동일한 위치에서만 가능합니다. 이때는 실행할때는 스크립트 명만 입력하면 됩니다.

스크립트

만일 다른 경로에 스크립트가 있다면, 그 위치의 실행 경로까지 모두 적어 주어야 합니다. 하지만, 이러한 입력들을 불편합니다. 이를 보다 쉽게 하기 위하여 환경변수 PATH를 응용하면 좋습니다.

path는 스크립트나 명령을 실행할때 현재의 위치에 없으면, path에 기록된 경로들을 모두 탐색하여 실행을 해주게 됩니다.

실습: 사용자 디렉터리에 bin 폴더를 하나 생성합니다. 그리고 이곳에 스크립트 파일들을 작성합니다. 생성한 bin 디렉터리를 path에 등록합니다.

PATH=$PATH:~/bin

실습 Hello World

hojin@hojin3:~$ cd bin
hojin@hojin3:~/bin$ vi hello.sh
hojin@hojin3:~/bin$ ls
hello.sh
hojin@hojin3:~/bin$ chmod +x hello.sh
hojin@hojin3:~/bin$

bin 디렉터리에서 실행해 봅니다.

hojin@hojin3:~/bin$ hello.sh
hello world!

이번에는 다른 디렉터리에서도 실행해 봅니다.

hojin@hojin3:~/bin$ cd ..
hojin@hojin3:~$ hello.sh
hello world!

실습2

스크립트를 작성할때는 vi에디터 또는 gedit와 같은 편집기를 사용합니다.

name.sh

#!/bin/sh
echo "사용자 이름: " $USER
echo "홈 디렉터리: " $HOME
exit 0
  • 1행: 첫 행에 반드시 써야 하며, 특별한 형태의 주석(#!)으로 배시셸을 사용하겠다는 의미
  • 2행: echo는 화면에 출력하는 명령어. 먼저 ‘사용자 이름 :’이라는 글자를 출력하고 옆에 $USER라는 환경 변수의 내용을 출력
  • 4행: 종료 코드를 반환. 0은 성공을 의미
hojin@hojin3:~/bin$ name.sh
사용자 이름:  hojin
홈 디렉터리:  /home/hojin
서브목차