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¸¦ Ãâ·ÂÇÕ´Ï´Ù.
½©À» ¹Ù²Ù´Â °¡Àå ½¬¿î¹æ¹ýÀº 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À» Àç½Ãµ¿ÇϽʽÿÀ.