Next Previous Contents

4. ¦UºØ©R¥O¸Ñ;¹ªº½d¨Ò

¥H¤U§Ú­Ì´£¥\¤@¨Ç½d¨Òµ¹±`¨£ªº©R¥O¸Ñ;¹¨Ï¥Î. §Ú­Ì¥ý±q zsh ¶}©l, ¥L¥i¥H´£¨Ñ³\¦hÆF¥©ªº¾÷¨î¨Ï±o§Ú­Ì«Ü®e©ö¦a§¹¦¨§Ú­Ì©Ò­nªº¤u§@. µM«á§Ú­Ì¦A¶i®i¨ìÃø«×¸û°ªªº½d¨Ò.

¦b©Ò¦³ªº½d¨Ò¤¤§Ú­Ì³£´ú¸Õ¤F $TERM Àô¹ÒÅܼÆ. ¥H½T©w§Ú­Ì¥u»Ý§â³o­Ó·¸¦ì¸ê°T°e¨ì xterm. §Ú­Ì¹ï $TERM=xterm* °µ´ú¸Õ; ¸U¥Î¦r¤¸¬O¦]¬°¨Ç³\ªº®t²§©Ê (¤ñ¦p rxvt) ·|³]©w $TERM=xterm-color.

§Ú­Ì­n¹ï C ©R¥O¸Ñ;¹ (C Shell) ±Ú¨t§@¯S§Oªºµù¸Ñ, ¤ñ¦p tcsh ¤Î csh. ¦b C ©R¥O¸Ñ;¹, ¨Ï¥Î¨ì¥¼©w¸qªºÅܼƴNºâ¬O­P©R©Êªº¿ù»~. ¦]¦¹, ¦b´ú¸ÕÅÜ¼Æ $TERM ¤§«e, ¥ý½T©w¨ä¬O§_¦s¦b§_«h·|¨Ï¦b«D¥æ½Í¼Ò¦¡¤U¤u§@ªº©R¥O¸Ñ;¹°±Â\. ­n¹F¨ì³o­Ó¥Øªº§A¥²¶·§â³¡¥÷ªF¦è¥Î¤U­±³oºØ¼Ë¦¡¥]°_¨Ó:

  if ($?TERM) then
      ...
  endif
(§Ú­Ì¬O¤£¥D±i¥Î C ©R¥O¸Ñ;¹ ªº²z¥Ñ¤§¤@. °Ñ¦Ò Csh Programming Considered Harmful ¦³«Ü¦h¦³¥Îªº°Q½×¤å³¹).

¥H¤Uªº½d¨Ò¥i¥H³Q¥Î¨Ó´¡¤J¨ì¦X¾Aªº©R¥O¸Ñ;¹ªºªì©l±Ò°ÊÀÉ; §Y ¨º­Ó¦b¥æ½Í¦¡©R¥O¸Ñ;¹±Ò°Ê®É·|¥hŪªº¨º­ÓÀÉ. ¦b¤j³¡¥÷ªº±¡ªp¥¦³QºÙ¬° .©R¥O¸Ñ;¹¦Wrc (¦p .zshrc, .tcshrc, µ¥).

4.1 zsh

zsh ´£¨Ñ³¡¥÷¥\¯à»P©µ¦ù¥\¯à, ¦Ó§Ú­Ì±N¥Î¨ì:

precmd ()   ¤@­Ó¦b´£¥Ü©R¥O«e¥²°õ¦æªº¥\¯à§t¦¡
chpwd ()    ¤@­Ó¦b¥Ø¿ý¦³©ÒÅܤƮɷ|°õ¦æªº¥\¯à§t¦¡
\e          ·¸¦ì¦r¤¸ (ESC)
\a          bell ªº·¸¦ì¦r¤¸ (BEL)
%n          ³Q¸ÑÄÀ¬° $USERNAME
%m          ³Q¸ÑÄÀ¬°¥D¾÷¦WºÙ¦b²Ä¤@­Ó '.' ¤§«eªº³¡¥÷
%~          ³Q¸ÑÄÀ¬°¥Ø¿ý, ¥H '~' ¨ú¥N $HOME
§ó¦hªº©µ¦ù¥\¯à: °Ñ¦Ò zshmisc ¨Ï¥Î¤â¥U.

¦]¦¹, ¥H¤U±N³]©w xterm ªº¥DÃD¬° "username@hostname: directory":

case $TERM in
    xterm*)
        precmd () {print -Pn "\e]0;%n@%m: %~\a"}
        ;;
esac
³o¤]¥i¥H¥Î chpwd() ¨ú¥N precmd() ¨Ó¹F¦¨. print ¤º«Øªº¤u§@¬O¸ò echo ¤@¼Ë, ¦ý¥i¥HÅý§Ú­Ì¥h¦s¨ú % ©R¥O´£¥Ü·¸¦ì¸ê°T.

4.2 tcsh

tcsh ªº³¡¥÷¥\¯à§t¦¡»P©µ¦ù¥\¯à»P zsh ¬Û¦P:

precmd ()   ¤@­Ó¦b´£¥Ü©R¥O«e¥²°õ¦æªº¥\¯à§t¦¡
cwdcmd ()   ¤@­Ó¦b¥Ø¿ý¦³©ÒÅܤƮɷ|°õ¦æªº¥\¯à§t¦¡
%n          ³Q¸ÑÄÀ¬° $USERNAME
%m          ³Q¸ÑÄÀ¬°¥D¾÷¦WºÙ
%~          ³Q¸ÑÄÀ¬°¥Ø¿ý, ¥H '~' ¨ú¥N $HOME
%#          ¹ï¥¿±`ªº¨Ï¥ÎªÌ¸ÑÄÀ¬° '>', ¦Ó¶W¯Å¨Ï¥ÎªÌ«h¬° '#'
%{...%}     ¤Þ¤J¤@­Ó¦r¦ê¬°³sÄòªº·¸¦ì§Ç¦C

¤£©¯ªº, ¨Ã¨S¦³»P zsh ªº print ¬Û¦P¥\¯àªº«ü¥O, ¯àÅý§Ú­Ì¦b¥DÃD¦r¦ê¤¤¨Ï¥Î´£¥Ü·¸¦ì¸ê°T, ¦]¦¹§Ú­Ì°ß¤@¯à¨Ï¥Îªº©R¥O¸Ñ;¹ÅÜ¼Æ (¦b ~/.tcshrc):

switch ($TERM)
    case "xterm*":
        alias precmd 'echo -n "\033]0;${HOST}:$cwd\007"'
        breaksw
endsw
µM¦Ó, ³o·|¥Î¥Ø¿ý§¹¾ãªº¸ô®|¨ú¥N¨Ï¥Î ~. §ï§â³o¨Ç¦r¦ê´¡¤JÃD¥Ü¦r¤¸:
switch ($TERM)
    case "xterm*":
        set prompt="%{\033]0;%n@%m:%~\007%}tcsh%# "
        breaksw
    default:
        set prompt="tcsh%# "
        breaksw
endsw
³o·|³]©w "tcsh% " ªº´£¥Ü¦r¤¸, ¦Ó xterm ªº¥DÃD¤Î¹Ï¥Ü¬° "username@hostname: directory". ­nª`·N "%{...%}" ¥²¶·Àô¶¦b·¸¦ì§Ç¦C¥~ (¥B¤£¯à³Q©ñ¦b ´£¥Üªº³Ì«á¤@¶µ: °Ñ¦Ò tcsh ¨Ï¥Î¤â¥U»¡©ú·|§ó¸Ô²Ó).

4.3 bash

bash ¤ä´©ÅÜ¼Æ $PROMPT_COMMAND ¤º§t¤@­Ó«ü¥O¦b´£¥Ü¦r¤¸¤§«e°õ¦æ. ³o­Ó½d¨Ò±N³]©w¥DÃD¬° username@hostname: directory:

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
¦b³oªº \033 ¬O¥Nªí¦r¤¸ ESC, ¦Ó \007 «h¬O BEL.

°O¦í¤Þ¸¹¦b³o¬Û·í­«­n: ·|³Q¸ÑÄÀªºÅܼƬO©ñ¦b "...", ¦Ó¤£¬O '...'. ¦]¦¹ $PROMPT_COMMAND ¬O³Q³]©w¬°¤@­Ó¤£³Q¸ÑÄÀªº­È, ¦ýÅܼƦb "..." ùئpªG¦³¥Î¨ì $PROMPT_COMMAND «h·|³Q¸ÑÄÀ.

µM¦Ó, $PWD ²£¥Í§¹¾ãªº¸ô®|. ¦pªG§Ú­Ì­n¨Ï¥Î ~ ³oºØ³t°O, «h§Ú­Ì­n§â·¸¦ì¦r¦ê´O¤J¨ì´£¥Ü¦r¤¸, ³o·|Åý§Ú­Ì¥i¥H§Q¥Î©R¥O¸Ñ;¹©Ò´£¨Ñªº©R¥O¦C©µ¦ù¥\¯à:

\u          ³Q¸ÑÄÀ¬° $USERNAME
\h          ³Q¸ÑÄÀ¬°¥D¾÷¦WºÙ¦b²Ä¤@­Ó '.' ¤§«eªº³¡¥÷
\w          ³Q¸ÑÄÀ¬°¥Ø¿ý, ¥H '~' ¨ú¥N $HOME
\$          ¹ï¥¿±`ªº¨Ï¥ÎªÌ¸ÑÄÀ¬° '>', ¦Ó¶W¯Å¨Ï¥ÎªÌ«h¬° '#'
\[...\]     ´O¤J«D¦C¦L¦r¤¸·¸¦ì§Ç¦C

¦]¦¹, ¥H¤U±N²£¥Í bash$ ªº´£¥Ü¦r¤¸, ¨Ã³]©w xterm ªº¥DÃD¬° username@hostname: directory:

case $TERM in
    xterm*)
        PS1="\[\033]0;\u@\h: \w\007\]bash\\$ "
        ;;
    *)
        PS1="bash\\$ "
        ;;
esac
°O¦í \[...\] ªº¨Ï¥Î, ¦b­pºâÃD¥Üªø«×®É, ±N§i¶D bash ©¿²¤±¼«D¦C¦Lªº±±¨î¦r¤¸. §_«h¦æ½s¿è«ü¥O±N·|¦b²¾°Ê´å¼Ð®É·d¶Ã±¼.

4.4 ksh

ksh ´X¥G¤£´£¨Ñ³oºØ¤è¦¡ªº¥\¯à¨ç¦¡»P©µ¦ù¥\¯à, ¦]¦¹§Ú­Ì¥²¶·´¡¤J·¸¦ì¦r¦ê¨ì´£¥Ü¦r¤¸¤¤, ¨Ï¥L¯à°ÊºA§ó·s ³o­Ó½d¨Ò±N²£¥Í¥DÃD¬° username@hostname: directory ¦Óand a prompt of ksh$ .

case $TERM in
    xterm*)
        HOST=`hostname`
        PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ '
        ;;
    *)
        PS1='ksh$ '
        ;;
esac
¦Ó, $PWD ·|²£¥Í§¹¾ãªº¥Ø¿ý¸ô®|. §Ú­Ì¥i¥H ¥Î ${...##...} ªº¤è¦¡²¾¥h $HOME/ ªº¦r­º. §Ú­Ì¤]¥i¥H¥Î ${...%%...} ªº¤èªk¨ÓºI¥h³¡¥÷ªº hostname:
HOST=`hostname`
HOST=${HOST%%.*}
PS1='^[]0;${USER}@${HOST}: ${PWD##${HOME}/}^Gksh$ '
°O¦í ^[ ¤Î ^G ¦b©R¥O¦C¦r¦ê¬O³æ¤@¦r¤¸ ªº ESC ¤Î BEL (¦b emacs ªºÀô¹Ò¤U¥i¥H¥Î C-q ESC ¤Î C-q C-g ¿é¤J).

4.5 csh

­n¦b csh §¹¦¨¦P¼Ëªº¨Æ¯uªº¦³ÂI§xÃø, ¦Ó§Ú­Ì¥Î¤U­±ªº¤è¦¡¨Ó¸Ñ¨M°ÝÃD:

switch ($TERM)
    case "xterm*":
        set host=`hostname`
        alias cd 'cd \!*; echo -n "^[]0;${user}@${host}: ${cwd}^Gcsh% "'
        breaksw
    default:
        set prompt='csh% '
        breaksw
endsw
³Â·Ðªº¦a¤è¬O§Ú­Ì­n§â cd ³o­Ó«ü¥O¤Æ¨­¦¨¥i°e¥X·¸¦ì¦r¦êªº¥\¯à. °O¦í ^[ ¤Î ^G ¦b©R¥O¦C¦r¦ê¬O³æ¤@¦r¤¸ªº ESC ¤Î BEL (¦b emacs ªºÀô¹Ò¤U¥i¥H¥Î C-q ESC ¤Î C-q C-g ¿é¤J).

°O¦í: ¦b³¡¥÷ªº¨t²Î hostname -s ¥i¯à·|¨ú±o¸ûµuªº hostname ¦Ó¤£¬O§¹¾ãªº¥þ¦W. ³¡¥÷¨Ï¥ÎªÌ¦b¦³²Å¸¹³sµ²ªº¥Ø¿ýÀ³¸Ó·|µo²{ `pwd` (¬A°_¨Ó¥H½T©w°õ¦æªº¬O pwd «ü¥O) ¥i¥H±o¨ì¤ñ $cwd §óºë½Tªº¸ô®|¦W.


Next Previous Contents