3.4. ½©

FreeBSD¿¡¼­, ÀÏ»óÀûÀÎ ÀÛ¾÷ÀÇ ´ëºÎºÐÀÌ ½© (shell)À̶ó°í ÇÏ´Â ¸í·ÉÇà ÀÎÅÍÆäÀ̽º(command line interface)¿¡¼­ ¼öÇàµË´Ï´Ù. ½©ÀÇ º»¾÷¹«´Â ÀԷ ä³Î¿¡¼­ ¸í·ÉÀ» ¹Þ¾Æ¼­ ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ½©Àº ÆÄÀÏ °ü¸®, ÆÄÀÏ ±Û·Îºù (file globing), ¸í·ÉÇà ÆíÁý, ¸í·É ¸¶Å©·Î ¹× ȯ°æº¯¼ö¿Í °°Àº ÀÏ»óÀÇ ÀÛ¾÷À» µ½´Â ºÙ¹ÚÀÌ (built in) ÇÔ¼ö¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. FreeBSD¿¡´Â sh (Bourne ½©) ¹× csh (C-½©)°ú °°Àº ½©ÀÌ ÀÖ½À´Ï´Ù. ¸¹Àº tcsh°ú bash°°Àº °­·ÂÇÑ ´Ù¸¥ ½©Àº FreeBSD Æ÷Æ® Ä÷º¼ÇÀ¸·Î ºÎÅÍ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

¾î¶² ½©À» »ç¿ëÇմϱî? ±â°ÍÀº ½ÇÁ¦ ÀÔ¸ÀÀÇ ¹®Á¦ÀÔ´Ï´Ù. C ÇÁ·Î±×·¡¸Ó¶ó¸é tcsh°°Àº C-ºñ½ÁÇÑ ½©¿¡ Æí¾ÈÇÔÀ» ´À³¥°ÍÀÔ´Ï´Ù. ÀÌÀü¿¡ ¸®´ª½º¸¦ ½è°Å³ª óÀ½À¸·Î UNIX ¸í·ÉÇà ÀÎÅÍÆäÀ̽º¸¦ Á¢ÇÑ´Ù¸é bash¸¦ ½ÃµµÇØ º¸½Ê½Ã¿ä. ¿äÁ¡Àº °³°³ÀÇ ½©ÀÌ ÀÏ»óÀÇ ÀÛ¾÷¿¡ ÀûÇÒÇϰųª ±×·¸Áö ¾ÊÀ» µ¶Æ¯ÇÑ ¼ºÁúÀÌ À־, ¾î¶² ½©À» »ç¿ëÇÒÁö °í¸£´Â °ÍÀº ¿©·¯ºÐÀÌ ÇÒ ÀÏÀÔ´Ï´Ù.

½©¿¡¼­ °øÅëÀûÀΠƯ¡Àº ÆÄÀÏ À̸§ ¿Ï¼ºÀÔ´Ï´Ù. ¸í·ÉÀ̳ª ÆÄÀÏÀ̸§ÀÇ Ã³À½ ¸î±ÛÀÚ¸¦ ŸÀÌÇÎÇѰͿ¡¼­ ÀÚÆÇÀÇ TAB±Û¼è¸¦ ´©¸§À¸·Î ½©ÀÌ ¸í·ÉÀ̳ª ÆÄÀÏÀ̸§ÀÇ ³ª¸ÓÁö°¡ ÀÚµ¿À¸·Î ¿Ï¼º½ÃÅ´´Ï´Ù. ¿¹¸¦ µé¾î º¸¸é, foobar¿Í foo.bar¶õ ÆÄÀÏÀÌÀÖ°í, foo.bar¸¦ Áö¿ì·ÁÇÕ´Ï´Ù. À̶§ ÀÚÆÇÀ¸·Î ´ÙÀ½°ú ÀÔ·ÂÇÕ´Ï´Ù. rm fo[TAB].[TAB]

½©Àº rm foo[BEEP].bar¶ó°í Ãâ·ÂÇÕ´Ï´Ù.

[BEEP]´Â ÄÜ¼Ö º§À̰í, À̰ÍÀº Çϳª ÀÌ»óÀÌ ¸ÅÄ¡µÇ¾î¼­ ÆÄÀÏÀ̸§À» ¿Ï¼º½Ãų ¼ö ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. foobar°ú foo.barÀÌ fo·Î ½ÃÀÛÇϹǷÎ, foo±îÁö ¿Ï¼º½ÃÄ×½À´Ï´Ù. ÀÌÁ¦ .À» ÀÔ·ÂÇϰí TABÀ» ´Ù½Ã ´©¸£¸é, ½©ÀÌ ÆÄÀÏÀ̸§À» ¿Ï¼º½ÃÄÑÁÝ´Ï´Ù.

½©ÀÇ ¶Ç´Ù¸¥ ±â´ÉÀº ȯ°æº¯¼öÀÔ´Ï´Ù. ȯ°æº¯¼ö´Â ½©ÀÇ È¯°æ°ø°£ (environmental space)¿¡ ÀúÀåµÇ´Â °¡º¯ Ű ½Ö (variable key pair) ÀÔ´Ï´Ù. ÀÌ °ø°£Àº ½©¿¡¼­ ºÒ·¯µéÀÎ ÀÓÀÇÀÇ ÇÁ·Î±×·¥ÀÌ ÀÐÀ» ¼ö ÀÖ°í, ¼ö ¸¹Àº ÇÁ·Î±×·¥ ¼³Á¤À» Æ÷ÇÔÇÏ°Ô µË´Ï´Ù. ¿©±â¿¡¼­ ÈçÈ÷ ¾²À̴ ȯ°æº¯¼ö¿Í Àǹ̸¦ ³ª¿­ÇÏ¿´½À´Ï´Ù.

º¯¼ö¼³¸í
USERÇöÀç ·Î±äÇÑ »ç¿ëÀÚ À̸§.
PATHÄÝ·ÐÀ¸·Î ±¸ºÐµÈ ÀÌÁø ÆÄÀÏ Å½»ö µð·ºÅ丮 ¸ñ·Ï.
DISPLAY¿¬°áµÈ X11 µð½ºÇ÷¹ÀÌÀÇ ³×Æ®¿÷ À̸§.
SHELLÇöÀç ½©.
TERM»ç¿ëÀÚ Å͹̳ΠÀ̸§. Å͹̳ÎÀÇ Çã¿ëÄ¡¸¦ Á¤ÇÏ´Â µ¥ »ç¿ëµÊ.
TERMCAP´Ù¾çÇÑ Å͹̳ΠÇÔ¼ö¸¦ ¼öÇàÇÏ´Â Å͹̳ΠÀ̽ºÄÉÀÌÇÁ ÄÚµå µ¥ÀÌÅͺ£À̽º.
OSTYPE¿î¿µÃ¼Á¦ÀÇ Á¾·ù. ¿¹, FreeBSD.
MACHTYPEµ¿ÀÛÇϰí ÀÖ´Â ½Ã½ºÅÛÀÇ CPU ±¸Á¶.
EDITOR»ç¿ëÀÚ°¡ ¼±È£ÇÏ´Â ÅØ½ºÆ® ÆíÁý±â.
PAGER»ç¿ëÀÚ°¡ ¼±ÇÏÇÏ´Â ÅØ½ºÆ® ÆäÀÌÁ®(pager).
MANPATHÄÝ·ÐÀ¸·Î ±¸ºÐµÈ ¸Þ´º¾ó ÆäÀÌÁö °Ë»ö µð·¢Å丮 ¸ñ·Ï.

ȯ°æº¯¼ö¸¦ º¸°Å³ª ÁöÁ¤Çϴ°ÍÀº ½©¸¶´Ù Á¶±Ý¾¿ ´Ù¸¨´Ï´Ù. ¿¹¸¦µé¾î, tcsh ¹× csh°°Àº C-Style ½©¿¡¼­´Â, ȯ°æº¯¼ö¸¦ ÁöÁ¤ÇÏ°í º¸´Âµ¥ setenv¸¦ »ç¿ëÇÑ´Ù. sh ¹× bash°°Àº Bourne ½©ÇÏ¿¡¼­´Â ÇöÀç ȯ°æº¯¼ö¸¦ º¸°Å³ª ÁöÁ¤Çϴµ¥ set ¹× export¸¦ »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦µé¾î, ȯ°æº¯¼ö EDITOR ¸¦ Á¤Çϰųª ¼öÁ¤ÇÏ·Á¸é, csh Ȥ´Â tcshÇÏ¿¡¼­ EDITOR¸¦ /usr/local/bin/emacsÀ¸·Î ÁöÁ¤Çϱâ À§ÇØ ´ÙÀ½ ¸í·ÉÀ» ³»¸³´Ï´Ù.

    % setenv EDITOR /usr/local/bin/emacs

Bourne ½©¿¡¼­´Â:

    % export EDITOR="/usr/local/bin/emacs"

´ëºÎºÐÀÇ ½©Àº ¸í·ÉÇà¿¡¼­ ȯ°æº¯¼ö À̸§ ¾Õ¿¡ $¸¦ ºÙ¿©¼­ À̸¦ Àü°³Çϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¾î, echo $TERM´Â $TERM°¡ Á¤ÇØÁøµ¥·Î Ãâ·ÂÇÕ´Ï´Ù. ¿Ö³ÄÇϸé, ½©ÀÌ $TERM¸¦ Àü°³Çؼ­ echo¿¡°Ô ÀüÇØÁֱ⠶§¹®ÀÔ´Ï´Ù.

½©Àº ´Ù¼öÀÇ ÀÚ·áÀÇ Æ¯¼öÇÑ Ç¥ÇöÀ» À§ÇØ ¸ÞŸ-¹®ÀÚ(meta-character)¶ó°í ºÎ¸£´Â Ư¼ö ¹®ÀÚ¸¦ Ãë±ÞÇÕ´Ï´Ù. °¡Àå º¸ÆíÀûÀÎ ¹®ÀÚ´Â * À̰í, ÀÌ´Â ÀÓÀÇÀÇ °¹¼öÀÇ ÆÄÀÏÀ̸§À» Ç¥ÇöÇÕ´Ï´Ù. ÀÌµé Æ¯¼ö ¸ÞŸ-¹®ÀÚ´Â ÆÄÀÏ À̸§ ±Û·Îºù(globing)¿¡ »ç¿ëµË´Ï´Ù. ¿¹¸¦µé¾î, echo * ´Â ls¿Í °ÅÀÇ °°Àº °á°ú¸¦ º¸¿©Áִµ¥ ÀÌ´Â ½©ÀÌ *¿Í ¸Â´Â ¸ðµç ÆÄÀÏÀ» °¡Á®´Ù echo¿¡°Ô ³Ñ°ÜÁֱ⠶§¹®ÀÔ´Ï´Ù.

½©ÀÌ ÀÌµé Æ¯¼ö ¹®ÀÚ¸¦ ÇØ¼®ÇÏ´Â °ÍÀ» ¸·À¸·Á¸é ¹é½½·¹½¬ (\) ¹®ÀÚ¸¦ ¾Õ¿¡ ºÙÀÔ´Ï´Ù. echo $TERM ´Â ÁöÁ¤µÈ Å͹̳ÎÀÌ ¹«¾ùÀÎÁö¸¦ º¸¿©ÁÖÁö¸¸, echo \$TERM ´Â $TERM¸¦ Ãâ·ÂÇÕ´Ï´Ù.

3.4.1. ½© ¹Ù²Ù±â

½©À» ¹Ù²Ù´Â °¡Àå ½¬¿î¹æ¹ýÀº chsh ¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. chsh¸¦ ½ÇÇàÇϸé ȯ°æº¯¼ö EDITOR¿¡¼­ ÁöÁ¤ÇÑ ÆíÁý±â¸¦ ºÎ¸§´Ï´Ù. ¸¸¾à ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é vi¸¦ ºÎ¸§´Ï´Ù. À̶§ "Shell:" °¡ ³ªÅ¸³­ ÇàÀ» ¹Ù²Þ´Ï´Ù.

chsh¸í·ÉÀ» ¿É¼Ç -s¸¦ ÁֹǷμ­ ÆíÁý±â¸¦ ºÎ¸£Áö ¾Ê°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¾î, ½©¸¦ bash·Î ¹Ù²Û´Ù¸é:

    % chsh -s /usr/local/bin/bash

¾Æ¹« ÆÄ¶ó¸ÞÅÍ ¾øÀÌ chsh½ÇÇà½ÃŰ°í ½©¸¦ ÆíÁýÇØµµ ¶È°°ÀÌ µ¿ÀÛÇÕ´Ï´Ù.

Note: »ç¿ëÇÒ ½©Àº Ʋ¸²¾øÀÌ /etc/shells¿¡ ÀÖ´Â °ÍÀÌ¿©¾ß ÇÕ´Ï´Ù. Æ÷Æ® ÄÝ·º¼Ç¿¡¼­ ½©À» ¼³Ä¡ Çß´Ù¸é, À̰ÍÀº ÀÌ¹Ì ÇàÇØ Á³¾î¾ß ÇÕ´Ï´Ù. ¼öµ¿À¸·Î ¼³Ä¡Çß´Ù¸é ÀÌÀÏÀ» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, bash¸¦ ¼öµ¿À¸·Î ¼³Ä¡Çß°í, /usr/local/bin¿¡ À§Ä¡ÇÑ´Ù¸é:

    # echo "/usr/local/bin/bash" >> /etc/shells

±×·±´ÙÀ½ chshÀ» Àç½Ãµ¿ÇϽʽÿÀ.