1. UNIX Shell°ú Shell ÇÁ·Î±×·¥

1.1 UNIX Shell°ú Shell ÇÁ·Î±×·¥

 

1.1.1 ShellÀÇ Á¤ÀÇ

  UNIXÀÇ ShellÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

  * ShellÀº ¿î¿µÃ¼Á¦¿Í »ç¿ëÀÚ »çÀÌÀÇ Áß°è ¿ªÇÒÀ» ÇÏ´Â ¸í·É¾î ÇØ¼®±â(command interpreter)ÀÌ´Ù.

  * ShellÀº º¯¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ°í Á¶°Ç¹®, ¹Ýº¹¹®, »ê¼ú ¿¬»ê µîÀ» ÇÒ ¼ö ÀÖ´Â ¿ÏÀüÇÑ ÇÁ·Î±×·¥ ¾ð¾î(program language)ÀÌ´Ù.

 

(1) Command Interpreter

  »ç¿ëÀÚ¿Í ½Ã½ºÅÛ°£ÀÇ ´ëÈ­¸¦ °¡´ÉÇÏ°Ô ÇØ ÁÖ´Â °ÍÀ¸·Î »ç¿ëÀÚ°¡ ÀԷ½ÃŲ ¸í·É¾î ¶óÀÎÀ» ÀÐ°í¼­ ÇÊ¿äÇÑ ½Ã½ºÅÛ ±â´ÉÀ» ½ÇÇà½ÃŲ´Ù.

 

(2) Program Language

  ÆÄÀÏ¿¡ ÀúÀåµÈ ÀÏ·ÃÀÇ ¸í·É ±ºÀ» ½ÇÇàÇÒ ¼ö ÀÖÀ¸¸ç, Á¦¾î ±¸Á¶¸¦ ÀÌ¿ëÇØ ¸í·ÉÀÇ ½ÇÇà ¼ø¼­¸¦ ¹Ù²Ü ¼ö ÀÖ´Ù.

 

1.1.2 Shell ÇÁ·Î±×·¥

  ShellÀÌ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¸í·ÉµéÀ» ¸ð¾Æ ³õÀº ÆÄÀÏÀ» ¸»Çϸç, C-language·Î ¸¸µç ÆÄÀÏÀ» c-programÀ̶ó Çϵí shell language·Î ¸¸µç ÆÄÀÏÀ» shell program ȤÀº shell script¶ó ºÎ¸¥´Ù.

  ±âÁ¸ÀÇ ÇÁ·Î±×·¥ ¾ð¾î(C, PASCAL µî)°¡ codingÀ» ÅëÇØ »õ·Î¿î ÇÁ·Î±×·¥À» ¸¸µå³ª, shell script´Â UNIX½Ã½ºÅÛ¿¡ ÀÖ´Â ¸í·É¾îµé°ú ±âº»ÀûÀ¸·Î shellÀÌ °¡Áö°í Àִ±â´ÉÀ» Á¶ÇÕÇÏ¿© ÇÁ·Î±×·¥À» ¸¸µç´Ù. Áï, ÀÌ¹Ì "ÀÖ´Â" ÇÁ·Î±×·¥µéÀ» Á¦¾î ±¸Á¶¿Í È¥ÇÕÇÏ¿© »õ·Î¿î ±â´ÉÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù.

  Shell scriptÀº shellÀÌ ½ÇÇàÇÒ ¼ö ÀÖ´Â UNIX ¸í·É°ú Á¦¾î ±¸Á¶ÀÇ Á¶ÇÕÀ¸·Î ±¸¼ºµÈ ÆÄÀÏÀÌ´Ù.

¡¡

1.1.3 Shell ÇÁ·Î±×·¥ÀÇ ÀåÁ¡

  Shell ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °ÍÀº Ÿ ÇÁ·Î±×·¥ ¾ð¾î¿¡ ºñÇØ ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ Àֱ⠶§¹®ÀÌ´Ù.

 

1.2 ShellÀÇ Á¾·ù

 

1.2.1 ShellÀÇ ¿ª»ç

  UNIX ½Ã½ºÅÛÀº Å©°Ô 3 ºÎºÐÀ¸·Î ³ª·ê ¼ö ÀÖ´Ù. °¡Àå Áß½ÉÀº ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â hardware¿µ¿ª, ´ÙÀ½Àº HW¿Í ÀÀ¿ë ÇÁ·Î±×·¥À» Áß°èÇÏ´Â OS ¿µ¿ª(¿î¿µÃ¼Á¦), ±×¸®°í ÀÀ¿ëÇÁ·Î±×·¥À¸·Î ³ª´­ ¼ö ÀÖ´Ù. ±×¸®°í ÀÌ ¿î¿µÃ¼Á¦ ºÎºÐÁß HW¿Í ¹ÐÁ¢ÇÑ °ü°è°¡ ÀÖ´Â ºÎºÐÀ» Ä¿³Î(kernel)À̶ó°í ºÎ¸£´Âµ¥, Ä¿³ÎÀº ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â HW¿¡ µû¶ó º¯ÇÑ´Ù. ÀÀ¿ë ÇÁ·Î±×·¥µéÀº ¿î¿µÃ¼Á¦ÀÇ ÀϺÎÀÎ kernelÀ» ÅëÇØ ½Ã½ºÅÛ HW¿Í ¿¬°á µÇ¹Ç·Î ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â HW¿Í º°°³·Î ¿î¿µµÈ´Ù.

  À̿Ͱ°ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥µéÀº HW¿Í º°°³·Î ¿î¿µµÇ¹Ç·Î, UNIXÀÇ ´Ù¸¥ HW¿¡ À̽ÄÇϰíÀÚ ÇÒ¶§, Ä¿³Î ºÎºÐ¸¸ À̽ÄÇÏ¸é µÈ´Ù.

  Shellµµ ¿î¿µÃ¼Á¦(Ä¿³Î)ÀÇ ÀϺΰ¡ ¾Æ´Ï°í "ls", "vi" µî°ú °°Àº ÀÀ¿ë ÇÁ·Î±×·¥ Áß ÇϳªÀÌ´Ù. Áï UNIX´Â óÀ½ºÎÅÍ shellÀ» ¿î¿µÃ¼Á¦ÀÇ ÁÖ¿ä ºÎºÐ°ú ºÐ¸®µÈ µ¶¸³ ÇÁ·Î±×·¥À¸·Î ¼³°èÇÏ¿´´Ù. µû¶ó¼­ ¿À´Ã³¯ »ç¿ëµÇ°í ÀÖ´Â shell¿¡´Â ¿©·¯ °¡Áö°¡ ÀÖÀ¸¸ç, »ç¿ëÀÚ°¡ À̸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

  »õ·Î °³¹ßµÇ´Â shellÀÇ Æ¯Â¡Àº ÁÖ·Î ¼Óµµ¸¦ Çâ»ó½ÃŰ´Â °ÍÀ¸·Î, ´õ ÀûÀº Ű ÀÔ·ÂÀ¸·Î °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ°Ô ÇÏ´Â °ÍÀÌ´Ù.

 

1.2.2 ShellÀÇ Á¾·ù

  UNIX ½Ã½ºÅÛ¿¡´Â ±âº»ÀûÀ¸·Î Bourne Shell, C Shell, K ShellÀÌ ¼³Ä¡µÇ¾î ÀÖÀ¸¸ç, ±âŸ ´Ù¸¥ ShellµéÀº InternetÀ» ÅëÇØ ¾òÀ» ¼ö ÀÖ´Ù.

 

(1) Bourne Shell

  ÀÌ shellÀº ±¸Á¶Àû ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Â ÇÁ·Î±×·¥ ¾ð¾î¸¦ ³»ÀåÇß°í, ƯÈ÷ ÀÔ/Ãâ·Â Á¦¾î¿¡ °­·ÂÇÑ ±â´ÉÀ» Á¦°øÇß´Ù. ±×·¯³ª ÀÌ shellÀÇ ÇÁ·Î±×·¥ ȯ°æ (ºñ´ëÈ­½Ä »ç¿ëÀÚ È¯°æ : non-interactive user interface)Àº ¸Å¿ì ÈǸ¢ÇÑ ¹Ý¸é ´ëÈ­½Ä »ç¿ëÀÚ È¯°æ(interactive user interface)Àº ¸Å¿ì ºó¾àÇÏ¿© Á» ´õ ³ªÀº "¹«¾ùÀΰ¡"°¡ ³ªÅ¸³¯ ¿©Áö¸¦ ³²°Ü ³õ¾Ò´Ù.

 

(2) C shell

  Bourne shellÀÇ ´ÜÁ¡ÀÎ ´ëÈ­½Ä »ç¿ëÀÚ È¯°æÀ» °­È­ÇÏ°í ¸î °¡Áö »õ·Î¿î °³³ä(job control, history, aliasµî)À» µµÀÔÇÑ C-shellÀ» ͏®Æ÷´Ï¾Æ ´ëÇб³ ¹öŬ¸® ºÐ±³¿¡¼­ ¸¸µé¾ú´Ù. ±×·¯³ª ÃʱâÀÇ C-shellÀº ¸¹Àº °áÇÔ(bug)ÀÌ ¹ß°ßµÇ¾î À̰ÍÀ» »ç¿ëÇÏ¿© ¿ÏÀüÇÑ shell script¸¦ ¸¸µå´Â µ¥´Â ¹®Á¦°¡ ÀÖ¾ú´Ù. ±×·¡¼­ ¸¹Àº »ç¶÷µéÀÌ C-shellÀÇ »ç¿ë¿¡ ÁÖÀúÇßÀ¸³ª, Æí¸®ÇÑ »ç¿ëÀÚ È¯°æÀ¸·Î ÀÎÇØ ´ëÈ­½Ä »ç¿ëÀÚ È¯°æÀº C-shellÀ» »ç¿ëÇÏ°í ºñ ´ëÈ­½Ä ȯ°æ(shell program)¿¡´Â ÁÖ·Î Bourne shellÀ» »ç¿ëÇÏ´Â ±âÇö»óÀÌ ³ªÅ¸³µ´Ù.

  C ShellÀÇ ÇÁ·Î±×·¥ÀÇ °æ¿ì ¾ð¾î ±¸Á¶°¡ C ¾ð¾î¿Í À¯»çÇϱ⠶§¹®¿¡ ÀÌÇØÇϱⰡ ½±´Ù. ¿©±â¼­µµ C ShellÀ» À§ÁÖ·Î ¼³¸íÀ» ÇÑ´Ù.

 

(3) TC shell

  C ShellÀÇ °áÇÔÀ» °íÄ¡°í ¸î °³ÀÇ »õ·Î¿î ±â´É(command line editing, spelling correction, login/logout watching µî)À» Ãß°¡ÇÏ¿© TC shell(tcsh)ÀÌ ¸¸µé¾î Á³´Ù. ±×·¯³ª ´ë´Ù¼öÀÇ UNIX½Ã½ºÅÛ Á¦Á¶¾÷ü¿¡¼­ TC shellÀ» ¼±ÅÃÇÏÁö ¾Ê°í Ç¥ÁØ C shellÀ» ±âº»ÀûÀ¸·Î žÀçÇ߱⠶§¹®¿¡ Áö±Ý±îÁö ºñÇ¥ÁØ shell·Î ³²¾Æ ÀÖ´Ù.

 

(4) Korn Shell

  AT&TÀÇ David Korn¿¡°Ô ÀÌ·¯ÇÑ È¥µ·À» Á¤¸®ÇÒ ¼ö ÀÖ´Â idea°¡ ÀÖ¾ú°í, ±× °á°ú·Î Korn shell(ksh)À» ¸¸µé¾ú´Ù. Áï Bourne shellÀÇ ºñ ´ëÈ­½Ä »ç¿ëÀÚ È¯°æ¿¡ C shellÀÇ ÈǸ¢ÇÑ ´ëÈ­½Ä »ç¿ëÀÚ È¯°æÀ» µ¡ºÙÀÎ °ÍÀÌ´Ù. Korn shellÀº °ð system VÀÇ ÀϺΰ¡ µÇ¾úÁö¸¸ ³ª¸ÓÁö ´Ù¸¥ shellµé°ú´Â ´Þ¸® "°øÂ¥"°¡ ¾Æ´Ï¾î¼­ kshÀ» »ç¿ëÇÏ·Á¸é AT&T¿¡ »ç¿ë·á¸¦ ÁöºÒÇØ¾ß ÇÏ´Â ¹®Á¦°¡ ÀÖ¾ú´Ù.

 

(5) Bourne Again Shell

  ÀÌ ½Ã±â¿¡ GNU project¿¡¼­ Korn shell¿¡ ¹ö±Ý°¡´Â ±â´ÉÀ» °®´Â "°øÂ¥" shellÀÌ ÇÊ¿äÇÏ´Ù´Â °áÁ¤À» ÇÏ¿´°í, ±× °á°ú bash(Bourne Again Shell)°¡ ź»ýÇß´Ù. Bash´Â Korn shell°ú ¸¶Âù°¡Áö·Î Bourne shell ¿¡ ±âÃÊÇÏ¿© c-shellÀÇ ¿©·¯±â´ÉÀ» Ãß°¡Çß°í, Korn shell°ú´Â ´Þ¸® "°øÂ¥"¿´À¸¹Ç·Î ±Þ¼ÓÈ÷ ÀüÆÄµÇ¾î ÇöÀç »õ·Î¿î ¼¼´ëÀÇ shellÁß¿¡¼­ °¡Àå Àαâ ÀÖ´Â shellÀÌ µÇ¾ú´Ù.

 

(6) Z-shell

  ´õ ¿ÏÀüÇÑ shellÀ» ÇâÇÑ ³¡¾ø´Â Ãß±¸´Â Áö±Ýµµ °è¼ÓµÇ°í ÀÖ°í, ±× °á°ú Bourne shell¿¡ ±âÃÊÇÑ ¶Ç ´Ù¸¥ shellÀÎ Z-shell(zsh)ÀÌ ³ªÅ¸³µ´Ù. ÀÌ shell¿¡´Â Àü¹®°¡µµ Á¤È®È÷ »ç¿ëÇϱâ Èûµç ¿©·¯ °¡ÁöÀÇ ´Ù¾çÇÑ ±â´ÉÀÌ ¸¹ÀÌ Ãß°¡µÇ¾ú´Ù.

 

1.2.3 shellÀÇ ºñ±³

¡¡      ShellÀÇ ±â´É ºñ±³

Function

sh

csh

ksh

bash

tcsh

zsh

  Job control

X

O

O

O

O

O

  Aliases

X

O

O

O

O

O

  Command history

X

O

O

O

O

O

  Command line editing

X

X

O

O

O

O

  login/logout watching

X

X

X

X

O

O

  File name completion

X

O

O

O

O

O

  Spelling correction

X

X

X

X

O

O

  Process substitution

X

X

X

O

X

O

  Shell scripts

O

O

O

O

O

O

  Freely available

X

X

X

O

O

O

 

 

1.3 Shell ScriptÀÇ ¿¹