이번 장에서는 시스템 관리자라면 반드시 알아야 될 쉘 스크립트에 대해서 알아볼까 한다.
쉘 스크립트를 잘 활용하면 단순 반복적인 작업을 손쉽게 할 수 있다.
리눅스의 기본 쉘인 Bash 쉘을 기본으로 하여 설명을 진행할 것이며 csh,tcsh 등등의 다른 쉘은
거의 비슷한 구조을 가지고 있으므로 나중에 따로 공부해 보기 바란다.
쉘 스크립트를 잘 활용하면 단순 반복적인 작업을 손쉽게 할 수 있다.
리눅스의 기본 쉘인 Bash 쉘을 기본으로 하여 설명을 진행할 것이며 csh,tcsh 등등의 다른 쉘은
거의 비슷한 구조을 가지고 있으므로 나중에 따로 공부해 보기 바란다.
환경 변수
먼저 기본 쉘 환경 변수에 대해서 알아보도록 하자. 현재 시스템에 로그인 한 상태에서 printenv 명령으로 확인해 볼 수 있다.
기본적으로 bash쉘은 /etc/profile,/etc/bashrc 파일에 시스템 전체 유저에 대한 설정이 들어있다.
각 유저는 본인의 홈디렉토리/.bashrc 나 .bash_profile 파일을 이용해서 개별적인 설정이 가능하다.
시스템 마다 약간씩 차이가 있을 것이다.
기본적으로 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 파일을 생성해 보도록 하자.
아래와 같은 내용으로 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
이처럼 쉘 스크립트는 항상 똑같은 작업을 해야되는 경우 간단하게 스크립트를 실행함으로써 간편하게 작업을 할 수 있도록 도와준다.
기본적인 구조를 알았다면 다음장에서는 실제로 스크립트를 작성하는 방법에 대해서 알아보도록 하자.
기본적인 구조를 알았다면 다음장에서는 실제로 스크립트를 작성하는 방법에 대해서 알아보도록 하자.