๐Ÿ“‚๋„คํŠธ์›Œํฌ&์„œ๋ฒ„/๐Ÿง๋ฆฌ๋ˆ…์Šค(Linux)

์‰˜ ์Šคํฌ๋ฆฝํŠธ

๐Ÿ‘ฉ‍๐ŸŽ“์ธํ…”๋ฆฌ๊ฐ์ž๐Ÿฅ” 2023. 7. 20. 17:39

  ์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ… ํ•ฉ๋‹ˆ๋‹ค...!!! ใ…Žใ…Ž

์‰˜ ์Šคํฌ๋ฆฝํŠธ

  ์‰˜(SHELL)์€ ์‚ฌ์šฉ์ž์™€ ์šด์˜์ฒด์ œ(์ •ํ™•ํžˆ๋Š” Kernel) ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ์ผ๋ จ์˜ Linux ๋ช…๋ น์–ด์ธ ์‰˜๋“ค์ด ๋ชจ์—ฌ ์žˆ๋Š” ํŒŒ์ผ์„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ(SHELL SCRIPTS)๋ผ๊ณ  ํ•˜๋Š”๋ฐ DOS์—์„œ ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์„œ์ ์œผ๋กœ ๋‚˜์—ดํ•œ ๋ฐฐ์น˜(batch) ํŒŒ์ผ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฐฐ์น˜ ํŒŒ์ผ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•จ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ตœ๊ทผ์—๋Š” Windows ์‹œ์Šคํ…œ์—๋„ PowerShell์„ ๋„์ž…ํ•ด์„œ Windows ์„œ๋ฒ„๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ช…๋ น์–ด๋กœ๋งŒ ์šด์˜ํ•˜๊ฒŒ ํ•˜๋Š” ์ถ”์„ธ์ด๋‹ค. 

  ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‚ฌ์šฉ์ž๋‚˜ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋’ค ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ๋„์šฐ๊ฑฐ๋‚˜, ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ํŒŒ์ผ๋กœ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ์žฌ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ์ž‘์—…๋“ค์„ ์ž๋™ํ™”์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‹œ์Šคํ…œ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž๋“ค์ด ์•Œ์•„๋‘ฌ์•ผ ํ•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์จ ๋ณดํ†ต ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋ผ๋ฉด C, C++, JavaScript, PHP, ๊ทธ๋ฆฌ๊ณ  Windows์˜ Power Shell๊ณผ ๋”๋ถˆ์–ด ์ด Shell Script๊ฐ€ ํ•„์ˆ˜์ ์ด๊ณ , ์ด์™ธ์—๋„ Ruby, Perl, ๊ทธ๋ฆฌ๊ณ  Python์— ๋Œ€ํ•œ ์ง€์‹์ด ์žˆ์œผ๋ฉด ์ข‹์€๋ฐ ์ด๋“ค ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ๋ชฉ์ ์— ๋งž๊ฒŒ๋” ์ผ๋ถ€๋ฅผ ๋ณ€ํ˜•์‹œ์ผœ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„๋ฉด ๋œ๋‹ค. 

  ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋„ˆ๋ฌด ๊ธด์žฅํ•  ๊ฒƒ์€ ์—†๋‹ค. ๊ฐœ๋ฐœ์ž ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ๊ณ  ํ•ด๋„ ์งง์€ ํ”„๋กœ๊ทธ๋žจ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋”ฉํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ๊ฒฝ์šฐ ๊ธฐ์กด์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž์‹ ์˜ ์‹œ์Šคํ…œ์ด๋‚˜ ๋„คํŠธ์›Œํฌ์— ๋งž๋„๋ก ์ˆ˜์ •ํ•ด์„œ ์ž‘์—…ํ•œ๋‹ค. C, JAVA, Python ๋“ฑ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๋ฏธ๋ฆฌ ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰์ผ€ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ•จ์ˆ˜ ๋“ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋“ค์„ ์ž˜ ๋ถˆ๋Ÿฌ๋‹ค ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ํ•„์ž์™€ ๊ฐ€๊นŒ์šด JAVA ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” JAVA๋ฅผ ๊ต์œก์‹œํ‚จ๋‹ค๊ฑฐ๋‚˜ JAVA๋ฅผ ๋ฐฐ์šด๋‹ค๋Š” ๊ฒƒ์€ Photoshop์ฒ˜๋Ÿผ JAVA ํ”„๋กœ๊ทธ๋žจ ์„ค๋ช…์„œ๋ฅผ ๋ณด๊ณ  JAVA๋ผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋” ์ž˜ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ด์ƒ ๋„คํŠธ์›Œํฌ๋‚˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด์„œ ๋งŽ์ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๊ณ , ํŠนํžˆ ์ด ๋ถ„์•ผ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋งค์šฐ ์‹ซ์–ดํ•˜๋Š” ์นœ๊ตฌ๋“ค์ด ๋งŽ๋‹ค. ๊ทธ๋‚˜๋งˆ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์งง์€ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋ผ์„œ ๊ทธ๋‚˜๋งˆ ๋‹คํ–‰(?)์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์‰˜(shell)
  ์‰˜์—๋Š” ์ตœ์ดˆ์˜ ์‰˜์ธ Borune Shell, ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™์—์„œ ๋งŒ๋“ค์—ˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•œ C Shell๊ณผ Tcsh shell, ๊ทธ๋ฆฌ๊ณ  Bourne Shell์˜ ๋ฐœ์ „๋œ ํ˜•ํƒœ๋กœ C Shell์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Korn Shell ๋“ฑ์ด ์žˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ Linux ๋ฐฐํฌํŒ์˜ ๋””ํดํŠธ ์‰˜์€ Bourne Shell์˜ ํ•œ ์ข…๋ฅ˜์ธ Bash(Borune Again SHell)๋กœ์จ /bin/bash์— ์ž๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. 

โ—พ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” Bourne, Bash์™€ Korn ์‰˜์—์„œ $, 
                 C ์‰˜์—์„œ๋Š” %๋กœ ์‰˜ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ ,
โ—พ root ๊ด€๋ฆฌ์ž๋Š” ๋ชจ๋‘ #์œผ๋กœ ์‰˜ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

tty ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ์ฝ˜์†”์„ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
ps๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.
cut ๋ช…๋ น์–ด๋Š” ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์œผ๋กœ ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์—์„œ ๊ตฌ๋ถ„์ž(delimiter)๋ฅผ ์ง€์ •ํ•˜๊ณ , ํ•ญ๋ชฉ(field)์„ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ํ•ญ๋ชฉ๋งŒ ๋ณด์ธ๋‹ค.

BigData ๋ถ„์„์—์„œ๋Š” ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์—์„œ ๋ถ„์„ํ•˜๊ณ ์ž ํ•˜๋Š” ํ•„์š”ํ•œ ํ•ญ๋ชฉ๋งŒ ์ถ”๋ ค์„œ ๋ฐ์ดํ„ฐ๋กœ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ-data preprocessing๋ผ๊ณ  ๋ถ€๋ฆ„-์ด๋Ÿฐ cut์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•„์š”ํ•œ ๋ฐ์ด๋งŒ ๊ฐˆ๋ฌด๋ฆฌํ•œ ๋’ค ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ถ„์„์„ ์œ„ํ•œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

ํ•˜๋‚˜์˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋“ค์„ ์ผ์ผํžˆ ์‰˜์—์„œ ์‹คํ–‰ํ•ด๋„ ๋˜์ง€๋งŒ 
์ด๋“ค์„ #!/bin/bash ์•„๋ž˜์— ํ•œ ์ค„์”ฉ ๋‚˜์—ดํ•ด์„œ 'ํŒŒ์ผ_๋ช….sh'๋กœ ์ €์žฅํ•œ ๋’ค
chmod +x ํŒŒ์ผ_๋ช….sh ํ•ด์„œ ์‹คํ–‰๋˜๊ฒŒ ํ•ด์ฃผ๊ณ  
bash OR sh OR ./ํŒŒ์ผ_๋ช….sh ํ•ด์„œ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋Š ์œ„์น˜์—์„œ๋„ ์‚ฌ์šฉ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด /usr/local/bin/์— ๋„ฃ์–ด๋‘๋ฉด ๋œ๋‹ค.   

์›๋ž˜ a ์‹คํ–‰ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” a ์‹คํ–‰ํŒŒ์ผ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์—์„œ ์‹คํ–‰์ด ๋œ๋‹ค.
ํ•˜์ง€๋งŒ $PATH๋ฅผ ๋ณด๊ณ  ๊ทธ์ค‘ ํ•œ ๊ณณ์— ์ด a ์‹คํ–‰ํŒŒ์ผ์„ ๋„ฃ์–ด๋‘๋ฉด ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์–ด๋Š ๊ณณ์—์„œ๋ผ๋„ ์‹คํ–‰์ด ๋œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  root๊ฐ€ ์ƒ์„ฑํ•œ ํŒŒ์ผ์ด๋ผ๋„ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค!!!!
=>์ด๊ฒƒ์ด ๊ฒฝ๋กœ(ํ™˜๊ฒฝ)๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ์ด์œ ์ด๋‹ค.   

 

๋ฌธ์ œ)
  centos ์‚ฌ์šฉ์ž์—์„œ 
cat /etc/sysconfig/network-scripts/ifcfg-ens33  ์™€ 
head -5 /etc/passwd
๋‘ ๋ช…๋ น์–ด๋ฅผ centos์˜ Desktop์— ์‰˜ ์Šคํฌ๋ฆฝํŠธ cent1.sh ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•œ ๋’ค 
paul ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰ํ•ด ๋ณด์‹œ์˜ค.

 

๋จผ์ €

cat > cent1.sh

#!/bin/bash

cat /etc/sysconfig/network-scripts/ifcfg-ens33  ์™€ 
head -5 /etc/passwd

๋กœ ํŒŒ์ผ ์ƒ์„ฑ

 

chmod +x cent1.sh๋กœ ์‹คํ–‰๊ถŒํ•œ์„ ์ฃผ๊ณ 

mv cent1.sh /usr/local/bin์œผ๋กœ ์˜ฎ๊ธด๋‹ค!

 

su - paul

cent1.sh ๋˜๋Š” ./cent1.sh ๋˜๋Š” bash cent1.sh ๋“ฑ์œผ๋กœ ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

 


  ๋ณ€์ˆ˜

  ๋ฐ์ดํ„ฐ๋‚˜ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด ๋‘๋ฉด ๋น ๋ฅด๊ฒŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ž‘์€ ๊ณต๊ฐ„(์…€(cell)๋กœ ๋ถ€๋ฆ„)์œผ๋กœ ๋ถ„ํ• ๋˜์–ด ์žˆ๊ณ , ๊ฐ ์…€๋งˆ๋‹ค 16์ง„๋ฒ•์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Linux์—์„œ๋Š” ์‹œ์Šคํ…œ์ด ์ƒ์„ฑํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๋ณดํ†ต ๋Œ€๋ฌธ์ž๋กœ ํ‘œ์‹œ๋˜๋Š” ์‹œ์Šคํ…œ ๋ณ€์ˆ˜(System Variables)์™€ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๋ณดํ†ต ์†Œ๋ฌธ์ž๋กœ ํ‘œ์‹œ๋˜๋Š” ์‚ฌ์šฉ์ž_์ •์˜ ๋ณ€์ˆ˜(User Defined Variables)๊ฐ€ ์žˆ๋‹ค. 
  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ A ์ €์žฅ ๊ณต๊ฐ„์— ๋“ค์–ด์žˆ๋Š” 10(A=10)์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ(๊ฐ’)๋ฅผ 12(A=12)๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด A ์ €์žฅ ๊ณต๊ฐ„์—๋Š” ์ด์ œ ๋ฐ”๋€ 12๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ A ์ €์žฅ ๊ณต๊ฐ„์€ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์ด ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜(Variable)๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  $A๋กœ ๋ถˆ๋Ÿฌ๋‚ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ์กด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ €์žฅ๋œ ๊ฐ’์„ ์—†์• ๋Š” ๊ฒƒ์„ ์ดˆ๊ธฐํ™”๋ผ๊ณ  ํ•œ๋‹ค. ์‰˜์—์„œ์˜ ๋ณ€์ˆ˜๋Š” C์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ ํ•œ ๋’ค ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ๋•Œ Python ์ฒ˜๋Ÿผ ๊ทธ ์ž๋ฆฌ์—์„œ ์„ ์–ธํ•ด์ฃผ๊ณ  ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

  ๋ณ€์ˆ˜_๋ช…์€ $๋’ค์— ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋Š”๋ฐ <-$HOME, $PATH, $.... 
โ–ช ์˜๋ฌธ์ž๋‚˜ _๋กœ ์‹œ์ž‘๋˜์–ด์•ผ ํ•˜๊ณ ,
โ–ช ๋ณ€์ˆ˜_๋ช…์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. no=10 ํ•ด์ฃผ๊ณ , echo $no ํ•˜๋ฉด ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’ 10์„ ๋ณด์ด์ง€๋งŒ, 
    echo $No ํ•˜๋ฉด $No๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰๋˜๋ฏ€๋กœ ์•„๋ฌด ๊ฐ’๋„ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.
=>pwd๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ $(pwd) ํ•˜๋ฉด ์ด ๋ช…๋ น์–ด์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰๋œ๋‹ค.
โ–ช ?๋‚˜ *์™€ ๊ฐ™์ด ์˜ˆ์•ฝ๋œ ์ง€์‹œ์–ด๋Š” ๋ณ€์ˆ˜_๋ช…์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋‹ค. 
โ–ช ๋ณ€์ˆ˜_๊ฐ’์€ ์ˆซ์ž๋‚˜ ๋ฌธ์ž, ๋ฌธ์žฅ์ด ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ฌธ์žฅ์€ " "๋กœ ๋ฌถ์–ด์„œ ํ‘œ์‹œํ•œ๋‹ค.
โ–ช ‘๋ณ€์ˆ˜_๋ช…=๊ฐ’’ ๊ตฌ๋ฌธ์—์„œ = ์ „ํ›„์— ๊ณต๊ฐ„์ด ์žˆ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค!!.  
โ–ช ๋ณ€์ˆ˜_๋ช…์— ํ™‘ ๋”ฐ์˜ดํ‘œ ' '์™€ ๊ฒน ๋”ฐ์˜ดํ‘œ " "๋ฅผ ๋ถ™์˜€์„ ๋•Œ ๊ฐ๊ฐ ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅด๋‹ค. 

echo $var1์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค.

์‹œ์Šคํ…œ ๋ณ€์ˆ˜ :  ๋ณ€์ˆ˜๋ฅผ ๋ณด๋Š” 'echo $๋ณ€์ˆ˜_๋ช…'์€ 'printenv ๋ณ€์ˆ˜_๋ช…($๊ฐ€ ์—†์Œ)'๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด์ด๋‹ค. 
์‹œ์Šคํ…œ ๋ณ€์ˆ˜_๋ช…์€ ์ฃผ๋กœ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋Š”๋ฐ BASH, BASH_VERSION, COLUMNS, LINES, LOGNAME, OSTYPE, PATH, PS1, PWD, SHELL, USERNAME, HOSTNAME ๋“ฑ์ด ์žˆ๋‹ค. ํŠน๋ณ„ํ•œ ์ผ์ด ์—†์œผ๋ฉด ์ด ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ํ•„์š”๋Š” ์—†๋‹ค. printenv๋Š” UNIX ์‹œ์Šคํ…œ์—์„œ์˜ ๋ณ€์ˆ˜ ํ™•์ธ ๋ช…๋ น์–ด์ธ๋ฐ Linux์—์„œ๋„ ์ผ๋ถ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”๋ฐ ๋ณ€์ˆ˜_๋ช…์— $๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์–ด ์ค„ ๋•Œ์—๋Š” export BASH์‹์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋™์ผํ•œ ๋ณ€์ˆ˜_๋ช…์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์ด ๊ฐ๊ฐ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณ€์ˆ˜(variable)์ด๋‹ค. ํ•˜๋‚˜์˜ ๊ณ ์ • ๋œ ๊ฐ’์„ ๊ฐ€์ง€๋ ค๋ฉด ์ƒ์ˆ˜(constant)๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

shell์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” export ๋ณ€์ˆ˜_๋ช…=๊ฐ’  ์œผ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

  .bashrc์™€ .bash_profile, profile์˜ ์ฐจ์ด๋ฅผ ๋ณด์ž. ์ด๋“ค์€ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๋“ค์–ด์žˆ๋‹ค.
ls -a $HOME/ ํ•˜๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ์ด ํŒŒ์ผ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
โ–ช .bash_profile์€ ์ฒ˜์Œ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธํ•  ๋•Œ ์ ์šฉ๋˜๋Š” ํ™˜๊ฒฝ์ธ๋ฐ Login Shell์—์„œ ์‹คํ–‰๋˜๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„ค์ •์ด๋‹ค. 
=>.bash_profile์€ ์ฒ˜์Œ ๋กœ๊ทธ์ธํ•ด์„œ ์‰˜๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ ์ ์šฉ๋˜๋Š” ์„ค์ •์ด๊ณ  
โ–ช .bashrc๋Š” ์ด๋ฏธ ๋กœ๊ทธ์ธ ํ•œ ์ƒํƒœ์—์„œ ์ƒˆ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์„ค์น˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ฒฝ๋กœ ๋“ฑ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š”๋ฐ Non-Login Shell์—์„œ ์‹คํ–‰๋˜๊ณ  Alias ๋“ฑ์ด ๋“ค์–ด๊ฐ„๋‹ค. 
=>.bashrc๋Š” ๋กœ๊ทธ์˜จ ํ•œ ๋‹ค์Œ ์‰˜์—์„œ ์ž‘์—…ํ•  ๋•Œ ์ ์šฉ๋˜๋Š” ์„ค์ •์ด๋‹ค.
=>์ด ํŒŒ์ผ์— ์„ค์ • ํ•œ ๋’ค์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ source .bashrc์‹์œผ๋กœ ํŒŒ์ผ์—์„œ์˜ ๋ณ€๊ฒฝ์ด ์ ์šฉ๋˜๊ฒŒ ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค!!!!
โ–ช profile๋Š” ์ฒ˜์Œ ๋กœ๊ทธ์ธํ•  ๋•Œ ๋กœ๋“œ๋˜๋Š”๋ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ ์šฉ๋œ๋‹ค. .bashrc์™€ ๋น„์Šทํ•˜๊ฒŒ ์ž‘๋™๋˜์ง€๋งŒ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„ค์ • ์ค‘์—์„œ bash์™€ ๊ด€๊ณ„์—†๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ ์šฉ๋œ๋‹ค. 
=>profile์€ bash๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ๋กœ๊ทธ์ธ ํ•  ๋•Œ ๋กœ๋“œ๋œ๋‹ค. 
โ–ช Login Shell์€ ssh๋กœ ์ ‘์†ํ•˜๊ฑฐ๋‚˜ su๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ ์ ์šฉ๋˜์–ด ํ„ฐ๋ฏธ๋„์„ ๋„์šฐ๊ฑฐ๋‚˜ bash ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‰˜์ด ์‹คํ–‰๋  ๋•Œ ์ ์šฉ๋œ๋‹ค.  /etc/profile, .bash_profile์ด๋‚˜ /etc/bashrc, .bashrc์ด ์‚ฌ์šฉ๋˜๊ณ , Non-Login Shell์€ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์‰˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค. 

 

์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•ด๋ณด์ž!!

~/.bash_profile : ์ด ํŒŒ์ผ์€ ์ง‘์— ์ฒ˜์Œ ๋“ค์–ด๊ฐˆ ๋•Œ ๋ˆˆ์— ๋„๋Š” ๊ฒƒ๋“ค, ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ ๋ฐœ์žฅ์ด๋‚˜ ์˜ท์žฅ ๋“ฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ง‘์— ์ฒ˜์Œ ๋“ค์–ด๊ฐ”์„ ๋•Œ ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ํ™•์ธํ•˜๊ณ , ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ž์ฃผ ํ™•์ธํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฒ˜์Œ ๋กœ๊ทธ์ธํ•ด์„œ ์‰˜๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ ์ ์šฉ๋˜๋Š” ์„ค์ •์ด๋ผ๋Š” ๋ง์„ ๊ทธ๋ ‡๊ฒŒ ์ดํ•ดํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ~/.bash_profile๋„ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธํ•  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๊ณ , ๊ทธ ์ดํ›„์—๋Š” ์ž๋™์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๋Š”๋‹ค. 

~/.bashrc : ์ด ํŒŒ์ผ์€ ์ง‘์•ˆ์—์„œ ์ผ์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฌผ๊ฑด๋“ค์ด ์ €์žฅ๋œ ์„œ๋ž์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
์„œ๋ž์„ ์—ด ๋•Œ๋งˆ๋‹ค ์ผ์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฌผ๊ฑด๋“ค์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณผํŽœ, ๋ฉ”๋ชจ์ง€, ๊ฐ€์œ„ ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค. ~/.bashrc๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒˆ๋กœ์šด ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ์„ค์ •๋“ค์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ์ด๋ฏธ ๋กœ๊ทธ์ธ ํ•œ ์ƒํƒœ์—์„œ ์ƒˆ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์„ค์น˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ฒฝ๋กœ ๋“ฑ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

~/.profile : ์ด ํŒŒ์ผ์€ ๋ณดํŽธ์ ์ธ ์ง‘์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋‚˜ ์„ค๊ณ„๋„๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ด๋–ค ์ง‘์ด๋“ ์ง€ ๋ฒฝ, ๋ฌธ, ์ฐฝ๋ฌธ ๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์žˆ๋‹ค.  ๋งŒ์•ฝ ํŠน์ • ์ง‘์— ํŠน๋ณ„ํ•œ ๊ตฌ์กฐ๊ฐ€ ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ ์„ค๊ณ„๋„๋ฅผ ๋”ฐ๋ฅด๊ฒŒ ๋œ๋‹ค. ~/.profile๋„ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ํŠน๋ณ„ํ•œ ์„ค์ • ํŒŒ์ผ(~/.bash_profile๋‚˜ ~/.bash_login)์ด ์—†๋‹ค๋ฉด bash๋Š” ~/.profile์„ ๋Œ€์‹  ์ฝ๊ฒŒ ๋œ๋‹ค!! (์šฐ์„ ์ˆœ์œ„: ~/.bash_profile > ~/.profile) ์ฒ˜์Œ ๋กœ๊ทธ์ธ ํ•  ๋•Œ ๋กœ๋“œ๋˜๋Š”๋ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ ์šฉ๋œ๋‹ค.



*** ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ์ด ์•ž์— .์ด ์žˆ์œผ๋ฉด ์ด๋Š” ์ˆจ๊น€(hidden) ์„ฑ๊ฒฉ์ด ๋œ๋‹ค.
์ด๋“ค์„ ๋ณด๋ ค๋ฉด ls -a ์‹์œผ๋กœ -a ์˜ต์…˜์„ ์ฃผ๋ฉด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

=>์‰˜์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด ./.bash_profile > /.bashrc > /etc/bashrc ์ˆœ์„œ๋กœ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค.