๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DevOps/Linux

[Linux] shell script ์ฃผ์„๊ณผ Shebang์‚ฌ์šฉ๋ฒ•

by ๐ŸŒปโ™š 2021. 3. 16.

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์„ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํŒŒ์ผ์— ๋Œ€ํ•œ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[Linux] ๋ฆฌ๋ˆ…์Šค ์ฑ… ์ถ”์ฒœ ๊ฐœ๋ฐœ์ž๋ถ€ํ„ฐ ๋น„๊ฐœ๋ฐœ์ž๊นŒ์ง€~

๋ฆฌ๋ˆ…์Šค ์ฑ… ์ถ”์ฒœ 1. ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๊ตฌ์กฐ์™€ ์›๋ฆฌ1,2 ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๊ตฌ์กฐ์™€ ์›๋ฆฌ. 1:๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋กœ ๋”ฐ๋ผํ•˜๋ฉด์„œ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  COUPANG www.coupang.com ๋””๋ฒ„๊น…์„

myjamong.tistory.com

 

๋Œ“๊ธ€