linux shell스크립트 기초

이번 장에서는 시스템 관리자라면 반드시 알아야 될 쉘 스크립트에 대해서 알아볼까 한다.
쉘 스크립트를 잘 활용하면 단순 반복적인 작업을 손쉽게 할 수 있다.
리눅스의 기본 쉘인 Bash 쉘을 기본으로 하여 설명을 진행할 것이며 csh,tcsh 등등의 다른 쉘은
거의 비슷한 구조을 가지고 있으므로 나중에 따로 공부해 보기 바란다.

 

환경 변수

먼저 기본 쉘 환경 변수에 대해서 알아보도록 하자. 현재 시스템에 로그인 한 상태에서 printenv 명령으로 확인해 볼 수 있다.
기본적으로 bash쉘은 /etc/profile,/etc/bashrc 파일에 시스템 전체 유저에 대한 설정이 들어있다.
각 유저는 본인의 홈디렉토리/.bashrc 나 .bash_profile 파일을 이용해서 개별적인 설정이 가능하다.
시스템 마다 약간씩 차이가 있을 것이다.

아래는 필자의 시스템에서 printenv 명령으로 살펴본 환경변수이다.

[stone@mail ~]$ printenv 
HOSTNAME=mail.nuxinfo.net
SHELL=/bin/bash
TERM=linux
HISTSIZE=1000
SVN_EDITOR=/usr/bin/vim
USER=stone
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01
MAIL=/var/spool/mail/stone
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/mysql/bin:/home/stone/bin
INPUTRC=/etc/inputrc
PWD=/home/stone
LANG=en_US
SHLVL=1
HOME=/home/stone
LOGNAME=stone
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/usr/bin/printenv
[stone@mail ~]$ 

 

변수 추가

쉘 스크립트에서 사용하는 변수를 추가하는 방법은 아래와 같다.

변수=변수값(변수와 변수값을 연결해주는 = 사이에는 절대로 공백이 있으면 안된다.)
ex)
EDITOR=/usr/bin/vim

즉 여러분이 원하는 변수는 쉘 프롬프트 상태에서 입력하면 바로 인식이 가능하다.
아래 예제를 보도록 하자.

[root@mail ~]# my_name="Kim Gyeong Min"
[root@mail ~]# echo $my_name
Kim Gyeong Min
[root@mail ~]#

설명을 하자면 my_name 이라는 변수에 Kim Gyeong Min 이라는 문자열을 추가했으며
echo 라는 명령어로 my_name 이라는 변수를 출력해 본 것이다.
변수를 호출할때는 반드시 $ 을 붙여주어야 한다.
로그아웃 할때까지는 저 변수는 계속 적용이 될 것이다. 하지만 로그아웃을 하는 순간 저 변수는 더이상 소용이 없게 된다.
따라서 항상 변수를 사용하고자 한다면 여러분의 홈디렉토리에 .bashrc 나 .bash_profile 에 추가해줘야 한다. 그러면 언제라도 사용이 가능하다.

기본적인 쉘 스크립트 이해하기

아래는 본인의 홈디렉토리에 test 디렉토리를 만드는 쉘 스크립트의 예제이다.
아래와 같은 내용으로 test.sh 파일을 생성해 보도록 하자.
vi test.sh
#!/bin/sh 또는 #!/bin/bash
mkdir $HOME/test

첫 라인에 있는 #!/bin/sh 또는 #!/bin/bash 는 아래에 나오는 스크립트를 /bin/sh 쉘이나 /bin/bash 쉘에서 해석하라는 이야기 이다.
참고로 기타 시스템에 설치된 여러가지 스크립트 언어도 사용이 가능하다.

#!/usr/bin/perl
#!/usr/bin/python
#!/usr/bin/php

 

쉘 스크립트를 실행하는 방법은 파일에 실행권한을 주는 방법과 쉘프롬프트에서 sh 파일명 형태로
직접 실행할 쉘을 명시해주는 방법이 있다.
실행 권한 주기

chmod 700 test.sh
./test.sh

./ 를 넣어주는 이유는 test.sh 파일은 PATH에 없기 때문에 현재 디렉토리라고 정확히 명시해주기 위해서이다.

쉘 프롬프트상에서 바로 실행하기

sh test.sh

 

이처럼 쉘 스크립트는 항상 똑같은 작업을 해야되는 경우 간단하게 스크립트를 실행함으로써 간편하게 작업을 할 수 있도록 도와준다.
기본적인 구조를 알았다면 다음장에서는 실제로 스크립트를 작성하는 방법에 대해서 알아보도록 하자.

Pages:

stone has written 25 articles

Leave a Reply