linux/script

#!/usr/bin/env bash 이란?

amelia-suyeon 2023. 10. 19. 11:11

필자는 docker 관련 수업을 들으며, script를 실행하여 docker를 설치하였다.

 

여태 개발하면서, shell script를 작성을 시작할 때는 주로 #!/bin/sh만 사용했다.

 

#!/bin/sh의 의미란 시스템에 지금부터 셸 스크립트를 쓴다는 사실을 알려주는 것이다.

 

(이번에 알게된, # = hash, ! =bang 이므로 #! = shebang 이라고 부른다. 그리고 #!바로 뒤에 나오는 것은 경로명으로, 명령어를 해석할 프로그램의 위치를 나타낸다!!

 

예시로, hello.sh 파일을 작성한다. -> 기본적으로 .sh 를 확장자로 사용함!

 

#!/bin/sh
echo "Hello, suyeon"

 

이 파일을 실행하기 위해서는 터미널에서 파일이 저장된 위치에서 명령어를 입력한다.

 

chmod 755 hello.sh (chmod 755 u+x hello.sh)

 

sh hello.sh
bash hello.sh

위의 3가지 방법 중 하나를 실행하면 된다!

 

실행하고 나면 Hello, suyeon 이 찍혀 나오는 것을 볼 수 있다. 

 

그렇다면, #!/usr/bin/env bash 이란?

 

위에서 말했듯이, #!+경로 인데, 시스템에 따라 /bin/local/python 혹은 /usr/bin/python 에  위치할 수 있고, 버전이 다를 경우도 있다! 

 

이런 경우를 대비해서, #!/usr/bin/env로 설정하면 절대 경로와 상관 없이 스크립트의 위치를 찾아서 실행한다!

혹시나, 이런 저런 환경에서 실행되어야 할 스크립트라면 #!/usr/bin/env 를 사용하는 것이 좋다!

 

예시) prepare.sh 을 작성

#!/usr/bin/env bash

echo "Prepare for test"

 

위 처럼 권한을 추가한다. 

 

chmod u+x prepare.sh

그리고 실행 ! 

 

./prepare.sh

하면, Prepare for test 가 출력되는 것을 볼 수 있다!