리눅스 쉘 스크립트 작동 원리 이해하기 - 현재쉘과 서브쉘
쉘 스크립트(shell script)란??
쉘 스크립트(shell script)에 쉘에 대한 설명, 쉘 스크립트 실행 파일 만들기에 대한 내용은 맨 아래 링크를 들어가시면 자세한 설명이 있으니 참고해주시면 됩니다.
쉘 스크립트(shell script)는 간단한 설명으로 쉘이 읽고 해석하여 실행할 수 있는 명령어들로 이루어진 텍스트 파일입니다.
예시)
#!/bin/bash
if [ $1 = "yes" ]
then
echo "argument is apple"
else
echo "argument is not apple"
fi
쉘 스크립트(shell script) 파일 작성
간단히 설명하면 리눅스 서버의 편집기를 사용하여 스크립트 파일(script file)을 작성합니다. 특별히 쉘 스크립트 첫 번째 라인은 스크립트를 실행할 shell을 지정해야 됩니다. 따라서 #!/bin/bash는 bash쉘을 선언하는 것이며 이후 명령어로 이루어진 내용을 작성합니다. 명령어는 출력 명령어 echo를 사용하여 Hello를 출력합니다. (예시 사진은 root 계정입니다)
$ vi runfile.sh
#!/bin/bash
echo "Hello"
쉘 스크립트(shell script) 실행 방법
서브 쉘에서 스크립트 실행
작성된 스크립트 파일(script file)을 chmod 명령어로 실행 권한을 부여한 후 실행합니다.
$ chmod 755 runfile.sh
$ ./runfile.sh
Hello
현재 쉘에서 스크립트 실행
작성된 스크립트 파일(script file)을 source 명령어로 실행합니다.
$ source runfile.sh
Hello
쉘 스크립트(shell script) 실행 방식
쉘 스크립트(shell script) 실행 방식은 현재 쉘에서 실행되는 방식과 서브 쉘에서 실행되는 방식이 있습니다. runfile.sh라는 스크립트 파일(script file) 안에 A라는 명령어와 B라는 명령어가 있다고 가정하에 서브쉘과 현재쉘의 작동 방식은 아래와 같습니다.
서브 쉘 스크립트 실행 방식
runfile.sh 스크립트 파일을 실행 가능 파일로 하여 직접 실행하는 경우. 현재 쉘에서 runfile.sh를 실행하고 서브 쉘에서 A와 B의 명령어를 실행합니다.
현재 쉘 스크립트 실행 방식
runfile.sh 스크립트 파일을 source 명령어로 실행하는 경우. 현재 쉘에서 runfile.sh를 실행하면 A와 B의 명령어는 그대로 현재쉘에서 실행하게 됩니다.
쉘 스크립트(shell script) 예제 실습 준비
쉘 스크립트(shell script) 실행 방식의 예를 들기에 앞서 runfile.sh 스크립트 파일 내용을 vi 편집기로 아래와 같이 작성하여 저장합니다.
$ vi runfile.sh
#!/bin/bash
apple=red
echo "banana=" $banana
echo "apple=" $apple
쉘 스크립트(shell script) 서브쉘 예제
runfile.sh 스크립트 파일에 실행 권한을 부여하고 banana 변수에 yellow의 값을 넣어준 후 runfile.sh 스크립트 파일을 실행하면 banana의 값은 yellow가 출력되지 않습니다. runfile.sh 스크립트 파일이 실행되면서 서브 쉘에 apple의 변수 red값만 저장이 되고 apple과 banana의 출력만 실행하기 때문입니다.
$ chmod +x runfile.sh
$ banana=yellow
$ ./runfile.sh
banana=
apple= red
쉘 스크립트(shell script) 현재쉘 예제
runfile.sh 스크립트 파일에 실행 권한 없이 source 명령어로 실행이 되지만 이미 서브 쉘 예제로 runfile.sh 스크립트 파일은 실행 권한이 부여되었기 때문에 그대로 진행하겠습니다. 현재 쉘에서 source 명령어로 runfile.sh 스크립트 파일을 실행하게 되면 서브쉘에서 실행되지 않고 현재쉘에서 실행되기 때문에 banana= yellow가 출력됩니다. 현재 사용하고 있는 쉘에 banana=yellow 내용을 입력했기 때문입니다.
$ banana=yellow
$ source runfile.sh
banana= yellow
apple =red
쉘 스크립트(shell script) 참고하기
쉘 스크립트 기초#1
리눅스 실행파일 만들기
https://rhrhth23.tistory.com/20
쉘 스크립트 기초#2
변수 선언, 변수 호출
https://rhrhth23.tistory.com/24
'IT > 리눅스 이론' 카테고리의 다른 글
리눅스 파일 소유권 허가권 - 리눅스 파일시스템 기초 (60) | 2022.07.31 |
---|---|
리눅스 path로 명령어 자동완성 만들기(환경변수 profile) (34) | 2022.06.26 |
리눅스 서버 네트워크 설정 방법과 네트워크 이중화 설정 (10) | 2022.06.03 |
리눅스 vsftpd 설정하는 방법과 ftp 서버 만들기에서 파일업로드까지 (0) | 2022.05.25 |
리눅스 외부 인터넷 없이 레포지토리 구성하기 - linux repository (3) | 2022.05.20 |
댓글