[Linux] ์‰˜๊ณผ ์‰˜ ์Šคํฌ๋ฆฝํŠธ

๐Ÿš ์‰˜์ด๋ž€?

์‚ฌ์šฉ์ž์™€ ์šด์˜์ฒด์ œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ช…๋ น์–ด์™€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ• 

 

์‰˜์˜ ์ข…๋ฅ˜

  1. sh(bourne shell)
    • ์ตœ์ดˆ์˜ ์‰˜, ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌ๋ˆ…์Šค์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ์Œ
    • /bin/sh
  2. bash(bourne again shell)
    • ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์‰˜
    • /bin/bash
  3. zsh(z shell)
    • sh์˜ ํ™•์žฅํ˜•
    • /bin/zsh
  4. csh(C shell)
    • C์–ธ์–ด ๊ธฐ๋ฐ˜์˜ ์‰˜
    • /bin/csh

 

์–ด๋–ค ์‰˜์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ

echo $SHELL

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-08-23 แ„‹แ…ฉแ„’แ…ฎ 3.34.44.png
mac์—์„œ๋Š” zsh
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-08-23 แ„‹แ…ฉแ„’แ…ฎ 3.35.46.png
Ubuntu์—์„œ๋Š” bash

 

 


์‰˜์—๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•œ ์ค„ ์”ฉ๋ฐ–์— ์ž‘์„ฑํ•˜์ง€ ๋ชปํ•˜๋Š”๋ฐ, ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์‹คํ–‰ ์‹œํ‚ฌ ์ˆ˜๋Š” ์—†์„๊นŒ?

๐Ÿ“ƒ์‰˜ ์Šคํฌ๋ฆฝํŠธ

๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ €์žฅํ•ด์„œ ํ•œ๋ฒˆ์— ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ
์ฆ‰, script.sh์™€ ๊ฐ™์€ ์‰˜์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ๋ช…๋ น์–ด๋“ค์„ ์‹น ์ €์žฅํ•ด๋†“๊ณ , ํ•œ๋ฒˆ์— ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ!!

 

๊ทธ๋Ÿผ, ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•œ๋ฒˆ ์จ๋ณด์ž!

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ€์žฅ ์ฒซ ์ค„์„ Shebang์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ๊ผญ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•˜๋Š” ๊ทœ์น™์ด ์žˆ์Œ

๊ฐ€์žฅ ์ฒซ ์ค„(Shebang)

ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋Š ์œ„์น˜์—์„œ ์‹คํ–‰ํ•  ๊ฑด์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„
#! /bin/bash

#! ๋’ค์— ์•„๊นŒ echo $SHELL์„ ํ†ตํ•ด ํ™•์ธํ•œ ์‰˜์˜ ์ข…๋ฅ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ์—๋Š” ๋ช‡๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ๋‹ค.

  • ๋Œ€, ์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ˆซ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜๋Š” ์—†๋‹ค.
  • ๋ชจ๋“  ๊ฐ’์ด ๋ฌธ์ž์—ด๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ์ž๋ฃŒํ˜•์„ ๊ธฐ์ž…ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” $๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋Œ€์ž…ํ•  ๋•Œ์—๋Š” $๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” =์•ž๋’ค๋กœ ๊ณต๋ฐฑ์ด ์—†์–ด์•ผํ•œ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ „์—ญ ๋ณ€์ˆ˜์ด๋ฉฐ, ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€์ˆ˜ ๋ช… ์•ž์— Local์„ ๋ถ™์—ฌ์ค˜์•ผํ•œ๋‹ค.
#! /bin/bash
name="Yong"
echo $name

์œ„ ์˜ˆ์‹œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฆฌ๋ˆ…์Šค์—์„œ ํ•œ๋ฒˆ ์‹คํ–‰์‹œ์ผœ๋ณด์ž.

 

์šฐ์„ , ์กฐ๊ธˆ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ UTM์„ ์ด์šฉํ•ด ํ‚จ Linux์—์„œ ip addr๋ฅผ ํ†ตํ•ด ip์ฃผ์†Œ๋ฅผ ์•Œ์•„ ๋‚ธ ๋‹ค์Œ

๋‚ด ๋…ธํŠธ๋ถ์—์„œ ssh ์ด๋ฆ„@ip์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์„œ vm์— ์—ฐ๊ฒฐํ•ด์„œ ์‹คํ–‰ํ•ด๋ดค๋‹ค.

1. ์‰˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ

vi test.sh

์ดํ›„์— i๋ฅผ ํ†ตํ•ด insert๋ชจ๋“œ๋กœ ๋“ค์–ด๊ฐ„ ํ›„, ์œ„์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค.

esc๋ฅผ ํ†ตํ•ด insert๋ชจ๋“œ๋ฅผ ๋๋‚ธ ๋‹ค์Œ :wq๋ฅผ ํ†ตํ•ด ์ €์žฅํ•˜๊ณ  ๋‚˜์™€์ค€๋‹ค.

 

2. ์‰˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์‹คํ–‰ํ•˜๊ธฐ

์•„๊นŒ ์ž‘์„ฑํ•œ test.shํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ,

./test.sh

๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, permission denied๊ฐ€ ๋œจ๋Š”๋ฐ, ls -al๋ฅผ ํ†ตํ•ด ๊ถŒํ™˜์„ ํ™•์ธํ•ด๋ณด๋ฉด ์‹คํ–‰ ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-08-23 แ„‹แ…ฉแ„’แ…ฎ 4.10.00.png
x๊ถŒํ•œ์ด ์—†์Œ

๊ทธ๋Ÿฌ๋ฏ€๋กœ, ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์ฃผ์ž

chmod +x test.sh

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-08-23 แ„‹แ…ฉแ„’แ…ฎ 4.10.45.png
x๊ถŒํ•œ์ด ์ถ”๊ฐ€๋จ

๋งŒ์•ฝ ์•ž์—๋งŒ x๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, chmod 764 test.sh๋ฅผ ํ†ตํ•ด ์•ž์—๋งŒ x๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์ž

./test.sh

 

์ดํ›„ ๋‹ค์‹œ test.shํŒŒ์ผ์„ ์‹คํ–‰ํ•ด๋ณด๋ฉด ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒฐ๊ณผ์ธ Yong์ด ์ถœ๋ ฅ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-08-23 แ„‹แ…ฉแ„’แ…ฎ 4.16.29.png
name์— Yong์„ ๋Œ€์ž…ํ•˜๊ณ , name์„ ์ถœ๋ ฅํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ