shell script ์ฃผ์
shell script์์ ์ฃผ์์ "#"์ ์ฌ์ฉํด์ ํ์ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ํน์ shell script๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ์ผ์ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์ค์ ํ๊ธฐ๋ "#"์ ๋ณด์ ์ ์๋์? ๊ฒ์ ๋ฐ๋ก Shebang์ด๋ผ๊ณ ํฉ๋๋ค.
Shebang์ด๋?
ํน์ ์คํฌ๋ฆฝํธ์์ ์ด๋ฐ ์ฃผ์์ ๋ณด์ ์ ์์ผ์ ๊ฐ์? shell script๋ฅผ ๋ค๋ค๋ณด์ จ๋ค๋ฉด ์๋ง ํ๋ฒ์ฏค ๋ณด์ จ์ ๊ฑฐ์์. ์ด๊ฒ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ์์๋ ๋ถ๋ ๊ณ์ค๊ฑฐ๊ณ ๋ชจ๋ฅด์๋ ๋ถ๋ ๊ณ์ค๊ฑฐ๊ณ ... ๊ทธ๋ฅ ์ฌ์ฉํ ๋ถ๋ค๋ ๊ณ์ค๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
"#!" ์ด ์ต๊ณผ ๋๋ํ๋ฅผ ๋ถ์ฌ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์ค์ ์ฌ์ฉํ๊ฒ๋๋ฉด ์ด๊ฒ์ shebang์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ ์ด๋ค ํ๋ก๊ทธ๋จ์ผ๋ก ํ์ผ์ ์คํํ ์ง ์ ์ํด์ค ์ ์๋ ๊ฒ์ ๋๋ค. Bash shell, Python, PHP ๋ฑ ๋ค๋ฅธ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ณ ๋ง์ฝ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๊ธฐ๋ณธ shell๋ก ์คํ์ด ๋ฉ๋๋ค.
$ echo $0
-bash
$ which bash
/usr/bin/bash
"$0"๋ฅผ echoํด์ ํ์ํ๋ฉด ๊ธฐ๋ณธ shell์ ํ์ธํ ์ ์์ต๋๋ค. which๋ก ๊ฒฝ๋ก๋ฅผ ํ์ธํด๋ณด๋ฉด "/usr/bin/bash"๊ฐ ๊ธฐ๋ณธ shell๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
test.sh
#! /usr/bin/bash
echo hi
"hi"๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด shellํ์ผ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์คํํด๋ณด๋ฉด ์ด์ ์์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํด๋ณผ ์ ์์ต๋๋ค.
๋ค์์ shebang์ ๋ํ ๋ด์ฉ์ ๋ณ๊ฒฝํด์ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
test.sh
#! /usr/bin/python3
echo hi
๋ง์ฝ shebang์ ํ์ด์ฌ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ค๋ฉด?
$ ./test.sh
File "./test.sh", line 2
echo "hi"
^
SyntaxError: invalid syntax
์ญ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ shell script๊ฐ ์๋ ํ์ด์ฌ์ผ๋ก ํ์ผ์ ์คํํ๋ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค.
์ด์ฒ๋ฆ Shebang์ ์๊ณ ์ฌ์ฉํด์ผ ํ์ผ์ ๋ํ ์๋๋ฅผ ๋ช ํํ ํ ์ ์๊ณ ์คํํ ์ ์์ต๋๋ค.
๋๊ธ