[리눅스] bash의 모든 것, #!/bin/bash의 의미

업데이트:

[리눅스] bash의 모든 것, #!/bin/bash의 의미

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

관련 링크

1. bash란?

리눅스에서는 Bourne shell(/bin/sh), bash shell(/bin/bash)을 사용하는데 bash를 더 많이 사용합니다. 참고로 bash쉘은 Bourne shell의 기능을 향상시킨 버전으로 bash는 Brourne Again Shell)의 줄임말입니다. /bin/sh와 /bin/bash는 거의 비슷하지만 bash에 기능이 몇가지 더 추가된 형태입니다. 맥북에서는 zsh을 많이 사용합니다.

2. shell 이란?

shell은 프로그램(program)입니다. 프로그램에는 사용 목적, 기능이 있는데 shell이라는 프로그램은 어떤 기능이 있는걸까요? shell은 운영 체제 속 내용물에 접근할 수 있는 기능을 제공하는 프로그램 입니다. 즉 shell을 이용하면 운영체제와 상호작용할 수 있다는 의미입니다.

shell에는 크게 두가지 종류가 있는데 CLI와 GUI로 나눌수 있습니다. CLI(Command Line Interface)는 bash와 같이 검은색 창에서 명령어를 입력하는 방식을 통해 운영체제와 상호작용할 수 있습니다. GUI(Graphical User Interface)는 윈도우나 맥과 같이 예쁜 화면에 아이콘을 클릭하는 방식으로 운영체제와 상호작용하는 방식을 의미합니다. 물론 윈도우나 맥에서도 CLI를 제공하니 어느쪽을 사용할지 선택할 수 있습니다.

3. 스크립트(script)란?

스크립트란 인터프리터(interpreter) 방식으로 동작하는 코드를 의미합니다.

3. bash는 프로그래밍 언어인가?

bash는 프로그래밍 언어입니다. 즉, 흔히 말하는 bash script란 bash 프로그래밍 언어로 쓰여진 프로그램 코드를 의미합니다.

10. #!/bin/bash의 의미

쉘 스크립트를 작성할때 가장 첫 줄에 #!/bin/bash라는 문구를 쓰게 되는데 이것의 의미는 bash 쉘을 사용하겠다는 의미입니다.

일반적으로 #는 주석이지만 #!와 같이 느낌표와 함께 쓰이면 이것은 느낌표가 아닙니다. #!는 셔뱅(shebang)이라고 부르고, #! 다음에 오는 문구를 실행합니다. 예를 들어 #!/bin/bash라고 쓰면 스크립트가 실행되면 /bin/bash부터 실행하게 됩니다. 따라서 /bin/bash 이후에 나오는 명령어는 bash를 이용해서 해석할 것이라는 의미입니다.

11. 사용법

예를 들어 다음과 같은 pred_batch.sh 파일을 생성한다고 해보겠습니다.

#!/bin/bash

# activate pyenv
source /home/dlit/.bashrc
source /home/dlit/.profile

pyenv activate py3_9_8

cd /home/dlit/work/living_paradise/daily_batch

nohup python ./daily_predict.py > /dev/null 2>&1  &
#python ./daily_predict.py

source deactivate

위 파일을 생성했으면 권한을 777로 바꿔줍니다.

$ chmod 777 pred_batch.sh

위와 같이 권한을 777로 바꿔주면 파일이 초록색으로 변합니다.

$ bash ./pred_batch.sh

그리고 위와 같이 bash 명령어를 이용해 sh파일을 실행합니다.
참고로 bash가 아니라 sh 명령어를 사용하면 pred_batch.sh 파일이 실행 안될수도 있으니 주의 부탁드립니다.

태그:

카테고리:

업데이트: