34.1. ´ëÈ­(interactive)Çü ¸ðµå¿Í ºñ´ëÈ­(non-interactive)Çü ¸ðµå ½©°ú ½ºÅ©¸³Æ®

´ëÈ­Çü ¸ðµåÀÇ ½©Àº ¸í·É¾î¸¦ tty ÀÇ »ç¿ëÀÚ ÀÔ·ÂÀ¸·ÎºÎÅÍ ÀÐ¾î µéÀÔ´Ï´Ù. ÀÌ ´ëÈ­Çü ¸ðµå ½©Àº ±× Áß¿¡¼­µµ ƯÈ÷³ª ±âº»ÀûÀ¸·Î, È°¼ºÈ­½Ã ½ÃÀÛ ÆÄÀÏ(startup)À» ÀÐ¾î µéÀÌ°í, ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇØ ÁÖ°í, ÀÛ¾÷ Á¦¾î¸¦ ÇØÁÝ´Ï´Ù. »ç¿ëÀÚ´Â ½©°ú ´ëÈ­¸¦ ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÅ°´Â ½©Àº Ç×»ó ºñ´ëÈ­Çü ¸ðµå ½©·Î µ¿ÀÛÇÏÁö¸¸ °è¼Ó ÀÚ½ÅÀÇ tty¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÉÁö¾î´Â ½ºÅ©¸³Æ®¿¡¼­ ´ëÈ­Çü ¸ðµå ½©À» Èä³»³»´Â °Íµµ °¡´ÉÇÕ´Ï´Ù.
#!/bin/bash
MY_PROMPT='$ '
while :
do
  echo -n "$MY_PROMPT"
  read line
  eval "$line"
done

exit 0

# ÀÌ ¿¹Á¦ ½ºÅ©¸³Æ®¿Í À§¿¡¼­ ¼³¸íÇÑ ¸¹Àº ºÎºÐµéÀº Stephane Chazelas °¡
# Á¦°øÇØ ÁÖ¾ú½À´Ï´Ù.

º¸Åë read ¹®(¿¹ 11-2 Âü°í)À¸·Î »ç¿ëÀÚ°¡ ÀÔ·ÂÀ» ¹Þ¾Æ µéÀÌ´Â ½ºÅ©¸³Æ®¸¦ ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®¶ó°í ÇսôÙ. "½ÇÁ¦ ¼¼°è"¿¡¼­´Â À̰ͺ¸´Ù Á¶±Ý ´õ º¹ÀâÇÏÁö¸¸, Áö±Ý ´çÀåÀº tty ¿¡ ¿¬°áµÇ¾î ÀÖ°í, »ç¿ëÀÚ°¡ ÄܼÖÀ̳ª ÇÑÅÒ¿¡¼­ ½ÇÇà½ÃŲ ½ºÅ©¸³Æ®¸¦ ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®¶ó°í °¡Á¤ÇÕ´Ï´Ù.

ÃʱâÈ­(init)¿Í ½Ã½ºÅÛ ±¸µ¿(startup) ½ºÅ©¸³Æ®´Â »ç¶÷ÀÇ °³ÀÔ¾øÀÌ µ¹¾Æ¾ß Çϱ⠶§¹®¿¡ ¹Ýµå½Ã ºñ´ëÈ­Çü ¸ðµå¿©¾ß ÇÕ´Ï´Ù. ¸¹Àº ¼öÀÇ °ü¸®¿ëÀ̳ª ½Ã½ºÅÛ À¯Áö¿ë ½ºÅ©¸³Æ® ¿ª½Ã ºñ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. Ç×»ó °°°í ¹Ýº¹ÀûÀÎ ÀÛ¾÷ÀÇ ÀÚµ¿È­¿¡´Â ºñ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÕ´Ï´Ù.

ºñ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®´Â ¹é±×¶ó¿îµå·Î µ¹ ¼ö ÀÖÁö¸¸, ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®´Â °áÄÚ ¹ÞÀ» ¼ö ¾ø´Â »ç¿ëÀÚ ÀÔ·ÂÀ» ±â´Ù¸®¸é¼­ ¸ØÃç ÀÖ°Ô µË´Ï´Ù. ÀÌ·¸°Ô ¹é±×¶ó¿îµå·Î µµ´Â ´ëÈ­Çü ¸ðµå ½ºÅ©¸³Æ®¿¡ ´ëÇؼ­´Â expect ½ºÅ©¸³Æ®³ª ½ºÅ©¸³Æ® ¾È¿¡ here document¸¦ »ç¿ëÇؼ­ ÀÔ·ÂÀ» Áý¾î ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. °¡Àå °£´ÜÇÑ ¹æ¹ýÀº read ¹®¿¡ ÀÔ·Â ÀçÁöÇâÀ» °É¾î¼­(read variable <file) ÆÄÀÏ¿¡¼­ ÀÔ·ÂÀ» ¹Þµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ±î´Ù·Î¿î ¸î °¡Áö ÇØ°áÃ¥ ´öºÐ¿¡ Æò¹üÇÑ ¿ëµµÀÇ ½ºÅ©¸³Æ®µéÀÌ ´ëÈ­Çü ¸ðµå³ª ºñ´ëÈ­Çü ¸ðµå ¾ç ÂÊ¿¡¼­ µ¹ ¼ö ÀÖ½À´Ï´Ù.

¸¸¾à¿¡ ½ºÅ©¸³Æ®°¡ ÇöÀç ´ëÈ­Çü ¸ðµå·Î µ¹°í ÀÖ´ÂÁö ¾Æ´ÑÁö´Â ´Ü¼øÈ÷ ÇÁ·ÒÇÁÆ® º¯¼öÀÎ $PS1ÀÌ ¼¼Æ®µÆ´ÂÁö ¾Æ´ÑÁö·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù(»ç¿ëÀÚ°¡ ÀÔ·ÂÀ» ÇÒ Â÷·Ê¶ó¸é(being prompted), ½ºÅ©¸³Æ®´Â ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù).
if [ -z $PS1 ] # ÇÁ·ÒÇÁÆ®°¡ ¾ø´Ù?
then
  # ºñ´ëÈ­Çü ¸ðµå
  ...
else
  # ´ëÈ­Çü ¸ðµå
  ...
fi
´Ù¸¥ ¹æ¹ýÀ¸·Î´Â, $- Ç÷¡±×¿¡¼­ "i" ¿É¼ÇÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö·Î È®ÀÎÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
case $- in
*i*)    # ´ëÈ­Çü ¸ðµå ½©
;;
*)      # ºñ´ëÈ­Çü ¸ðµå ½©
;;
# (1993³â "UNIX F.A.Q."¿¡¼­ Àοë)

Âü°í: ½ºÅ©¸³Æ®¿¡ -i ¿É¼ÇÀ» Áְųª #!/bin/bash -i Çì´õ¸¦ ÁÖ¸é °­Á¦·Î ´ëÈ­Çü ¸ðµå·Î µ¿ÀÛÇϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇßÀ» °æ¿ì¿¡´Â ½ºÅ©¸³Æ®°¡ ¾û¶×ÇÏ°Ô µ¿ÀÛÇѴٰųª ¿¡·¯°¡ ¾ø´Âµ¥µµ ¿¡·¯ ¸Þ¼¼Áö¸¦ º¸¿©ÁÙ ¼öµµ Àֱ⠶§¹®¿¡ Á¶½ÉÇØ¾ß ÇÕ´Ï´Ù.