#!
sharp(#) + bang(!)์ ํฉ์ฑ์ด, shebang์ด๋ผ ํ๋ค.
- 2byte์ ๋งค์ง ๋๋ฒ(magic number)๋ก ์ด ์์ฒด๊ฐ ํ๋์ ๊ธฐํธ
- ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํฌ ํ๋ก๊ทธ๋จ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ์ญํ
- ์ด ๋ค์ ๋์ค๋ ๊ฒ์ ๊ฒฝ๋ก๋ช , ๋ช ๋ น์ด๋ค์ ํด์ํ ํ๋ก๊ทธ๋จ์ ์์น๋ฅผ ๋ํ๋
- ๊ฒฝ๋ก๊ฐ ์ ํํ์ง ์๋ค๋ฉด
bad interpreter
๋ฐ์ - ๋ค๋ฅธ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ง์ ํ๋ฉด ๋ฌธ๋ฒ ์ค๋ฅ ๋ฐ์
๋ฌธ๋ฒ
#!<interpreter> [optional-arg]
#!
๋ค์ ๊ณต๋ฐฑ์ด ํ๋ ์์ด๋ ๋์<interpreter>
์๋ ํ๋ก๊ทธ๋จ์ ์ ๋๊ฒฝ๋ก ์
๋ ฅ
์์
#!/bin/sh
#!/bin/bash
#!/usr/bin/php
#!/usr/bin/python -O
#!/usr/bin/env bash
#!/usr/bin/env
interpreter
์ ๋ค์ด๊ฐ ํ๋ก๊ทธ๋จ์ ์ ๋ ๊ฒฝ๋ก๋ ์์คํ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋ค.
ex) ํ์ด์ฌ์ ์๋ก ๋ค๋ฉด/bin/local/python
๋๋/usr/bin/python
์ ์์นํ ์๋ ์๊ณ
๋ฒ์ ๋ python2์ python3์ด ๋๋ค ์ค์น๋์ด ์์์ ์๋ค.- ์ด๋ด ๋
#!/usr/bin/env
๋ก ์ค์ ํ๋ฉด ์ ๋๊ฒฝ๋ก์ ์๊ด์์ด ์ธํฐํ๋ฆฌํฐ์ ์์น๋ฅผ ์ฐพ์์ ์ดํenv
๋ ์ฌ์ฉ์์ $PATH(ํ๊ฒฝ๋ณ์)์์ ์ฒซ๋ฒ์งธ๋ก ์ฐพ์ ๋ช ๋ น๋ฅผ ์ฐพ์์ ์คํ๋จ- ๋ค์ํ ํ๊ฒฝ์์ ์คํ๋๋ ์คํฌ๋ฆฝํธ๋ผ๋ฉด
env
์ฌ์ฉํ๊ธฐ
์์
# ํ๊ฒฝ ๋ณ์ ์ ๋ณด ์ถ๋ ฅ
env
# ํ๊ฒฝ ๋ณ์ ์ ๋ณด ๋ณ๊ฒฝ
env -i HOSTNAME=test.com
# ํ๊ฒฝ ๋ณ์ ์ ๋ณด ๋ณ๊ฒฝ
env -u HOSTNAME
# env ์ด์ฉํ bash ์คํํ๊ธฐ
/usr/bin/env bash --version
ํ ์คํธ
1. vi test
ํ์ผ ์์ฑ
#!/usr/bin/env bash
echo "Hello, This is Bash"
2. ์คํ ๊ถํ ์ถ๊ฐํ๊ณ ์คํ
# ๊ถํ ์ถ๊ฐ
$ chmod +x test
# ์คํ
$ ./test
Hello This is Bash
3. ๋ค์ ํ์ผ์ ์ด๊ณ ์ธํฐํ๋ฆฌํฐ๋ฅผ ํ์ด์ฌ์ผ๋ก ์ง์
#! /usr/bin/env python
echo "Hello This is Bash"
4. ํ์ด์ฌ ๋ฌธ๋ฒ์ ๋ง์ง ์์ ์ค๋ฅ ๋ฐ์
$ ./test
File "./test", line 3
echo "Hello This is Bash"
^
SyntaxError: invalid syntax
5. ํ์ผ ์ด๊ณ ํ์ด์ฌ ๋ฌธ๋ฒ์ผ๋ก ์์
#! /usr/bin/env python
print "Hello This is Python"
6. ํ์ผ ์คํํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํจ
$ ./test
Hello This is Python
์ฐธ๊ณ
https://blog.gaerae.com/2015/10/what-is-the-preferred-bash-shebang.html