3.9 Shells

¦b FreeBSD ¤¤¡A«Ü¦h¤é±`ªº¤u§@¬O¦b¤@­Ó¥s°µ shell ªº¤å¦r¤¶­±¤¤§¹¦¨ªº¡C Shell ªº¥D­n¤u§@´N¬O±q¿é¤J¤¤¦¬¨ì©R¥O¨Ã°õ¦æ¥¦­Ì¡C ³\¦h shell ¤]¦³¤º«Ø¤@¨Ç¦³§U©ó¤é±`¤u§@ªº«ü¥O¡A ¹³¬OÀɮ׺޲z¡BÀɮפñ¹ï¡B©R¥O¦C½s¿è¡B«ü¥O¥¨¶°¥H¤ÎÀô¹ÒÅܼƵ¥¡C FreeBSD ¦³¤ºªþ¤F´X­Ó shell¡A¹³¬O sh¡A Bourne Shell¡A¥H¤Î tcsh¡A§ï¨}ª©ªº C-shell¡C ÁÙ¦³³\¦h¨ä¥Lªº shell ¥i¥H±q FreeBSD Ports Collection ¤¤¨ú±o¡A¹³¬O zsh ¥H¤Î bash µ¥¡C

±z¥Î­þ­Ó shell ©O¡H ¨ä¹ê¨C­Ó¤Hªº³ß¦n³£¤£¤@¼Ë¡C ¦pªG±z¬O¤@­Ó C µ{¦¡³]­p®v¡A¨º¹ï©ó¨Ï¥Î¹³¬O tcsh ³oºØ C-like ªº shell ¥i¯à·|·P¨ì¬Û·í´r§Ö¡C ¦pªG§A¬O±q Linux ¸õ¹L¨Óªº¡A©ÎªÌ±z¬O¤@­Ó UNIX® ·s¤â¡A¨º±z¤]³\·|·Q­n¥Î bash ¨Ó·í§@¤å¦r¤¶­±¡C ¨C¤@­Ó shell ³£¦³¦Û¤w¿W¯S¤§³B¡A¦Ü©ó³o¨Ç¯SÂI¯à¤£¯à°t¦X±zªº¤u§@Àô¹Ò¡H ¨º´N¬O±z¿ï¾Ü shell ªº­«ÂI¤F¡C

ÀɦW¦Û°Ê¸É»ô´N¬O±`¨£ªº shell ¥\¯à¡C ­º¥ý¿é¤J«ü¥O©ÎÀɮתº«e´X­Ó¦r¥À¡A³o®É³q±`±z¥u»Ý­n«ö¤U Tab Áä¡A±µ¤U¨Ó shell ´N·|¦Û°Ê§â«ü¥O©Î¬OÀɮצWºÙ³Ñ¾lªº³¡¥÷¸É»ô¡C °²³]±z¦³¨â­ÓÀɮפÀ§O¥s§@ foobar ¤Î foo.bar¡C ²{¦b­n§R±¼ foo.bar¡A¨º»ò¥i¥H¿é¤J¡G rm fo[Tab].[Tab]

Shell ·|¦L¥X³o­Ó¡G rm foo[¹Í].bar¡C

[¹Í] ¬O console ªºÅT¹a¡A³o¹Íªº¤@Án¬O shell ¦b§i¶D§Ú»¡¥¦¨S¦³¿ìªk§¹¥þ¦Û°Ê¸É»ôÀɦW¡A¦]¬°¦³¤£¥u¤@­ÓÀɦW²Å¦X±ø¥ó¡C foobar ©M foo.bar ³£¬O fo ¶}ÀYªºÀɦW¡A¤£¹L¥¦¦Ü¤Ö¥i¥H¸É»ô¨ì foo¡C ¦pªG±z±µµÛ¿é¤J . µM«á¦A«ö Tab ¤@¦¸¡A¨º shell ´N¯à°÷´À±z§â³Ñ¤UªºÀɦW¶ñº¡¤F¡C

Shell ªº¥t¤@¶µ¯SÂI¬O¨Ï¥Î¤FÀô¹ÒÅܼơC Àô¹ÒÅܼƬO¥HÅܼƻPÁä­È¡]variable/key¡^ªº¹ïÀ³Ãö«YÀx¦s©ó shell ªºÀô¹ÒªÅ¶¡¤¤¡A¥ô¦ó¥Ñ shell ©Ò²£¥Íªºµ{§Ç³£¥i¥HŪ¨ú¦¹ªÅ¶¡¡A ¦]¦¹³o­ÓªÅ¶¡Àx¦s¤F³\¦hµ{§Çªº³]©w²ÕºA¡C ¦b¦¹ªþ¤W ¤@¥÷±`¨£Àô¹ÒÅܼƻP¨ä²[¸qªº¦Cªí¡G

ÅÜ¼Æ ¸Ô²Ó»¡©ú
USER ¥Ø«eµn¤Jªº¨Ï¥ÎªÌ¦WºÙ¡C
PATH ¥H«_¸¹¡]:¡^¹j¶}ªº¥Ø¿ý¦Cªí¡A¥Î¥H·j´M°õ¦æÀɪº¸ô®|¡C
DISPLAY ­Y¦s¦b³o­ÓÀô¹ÒÅܼơA«h¥Nªí X11 ³sµ²Åã¥Ü¾¹ªººô¸ô¦WºÙ¡C
SHELL ¥Ø«e¨Ï¥Îªº shell¡C
TERM ¨Ï¥ÎªÌ²×ºÝ¾÷ªº¦WºÙ¡A¯àÂǥѦ¹ÅܼƧPÂ_²×ºÝ¾÷ªº¯à¤O¡C
TERMCAP Database entry of the terminal escape codes to perform various terminal functions.
OSTYPE §@·~¨t²ÎªººØÃþ¡A¦p¡GFreeBSD¡C
MACHTYPE ¥Ø«e¨t²Î©Ò¥Îªº CPU ¬[ºc¡C
EDITOR ¨Ï¥ÎªÌ°¾¦nªº¤å¦r½s¿è¾¹¡C
PAGER ¨Ï¥ÎªÌ°¾¦nªº¤å¦r¤À­¶¾¹¡]text pager¡^¡C
MANPATH ¥H«_¸¹¡]:¡^¹j¶}ªº¥Ø¿ý¦Cªí¡A¥Î¥H·j´M manual pages ªº¸ô®|¡C

¦b¤£¦Pªº shell ©³¤U³]©wÀô¹ÒÅܼƪº¤è¦¡¤]¦³©Ò¤£¦P¡C Á|¨Ò¨Ó»¡¡A¦b C-Style ªº shell ©³¤U¡A¹³¬O tcsh ©M csh¡A§A¥²¶·¨Ï¥Î setenv ¨Ó³]©wÀô¹ÒÅܼơC ¦ý¦b Bourne shells ©³¤U¡A¹³¬O sh ©M bash¡A§A«h¥²¶·¨Ï¥Î export ¨Ó³]©w§A©Ò¨Ï¥ÎªºÀô¹ÒÅܼơC ¦AÁ|­Ó¨Ò¤l¨Ó»¡¡A­Y­n³]©w©Î¬O­×§ï EDITOR ³o­ÓÀô¹ÒÅܼơA¦b csh ©Î tcsh ¤U³]©w EDITOR ³o­ÓÀô¹ÒÅܼƬ° /usr/local/bin/emacs ªº«ü¥O¬O¡G

% setenv EDITOR /usr/local/bin/emacs

¦b Bourne shells ¤U«h¬O¡G

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

¤j¦h¼Æªº shell ³£¤ä´©¨Ï¥ÎªÌ¦b©R¥O¦C¤¤±N $ ¦r¤¸©ñ¦bÅܼƤ§«e¡A¥H¨ú±oÀô¹ÒÅܼƪº­È¡C Á|¨Ò¨Ó»¡¡Aecho $TERM ·| Åã¥Ü¥X $TERM ªº³]©w­È¡A³o¬O¦]¬° shell ¨ú±o¤F $TERM ªº³]©w­È¡A ¨Ã±N¨ä¶Çµ¹ echo Åã¥Ü¥X¨Ó¡C

Shell ¤¤¦³¬Y¨Ç¯S§Oªº¦r¤¸¬O¨Óªí¥Ü¯S®íªº¸ê®Æ¡A§Ú­Ì±N¨äºÙ§@ meta-characters¡C ¨ä¤¤³Ì±`¨£ªº¬O * ¦r¤¸¡A¥L¥Nªí¤FÀɦW¤¤ªº¥ô·N¦r¤¸¡C ³o¨Ç¯S®í¦r¤¸¥i¥H¥Î¦bÀɦW®i¶}¡]filename globbing¡^¤W¡AÁ|¨Ò¨Ó»¡¡A¿é¤J echo * ·|©M¿é¤J ls ±o¨ì´X¥G¬Û¦Pªºµ²ªG¡A³o¬O¦]¬° shell ·|±N©Ò¦³²Å¦X * ¦r¤¸ªºÀɮ׶Ǩì©R¥O¦C¤W¡A¦A¥Ñ echo Åã¥Ü¥X¨Ó¡C

¬°¤FÁ×§K shell Âàͳo¨Ç¯S®í¦r¤¸¡A§Ú­Ì¥i¥H¦b³o¨Ç¯S®í¦r¤¸«e©ñ¤@­Ó¤Ï±×½u (\) ¦r¤¸¨Ï¥L­Ì¸õ²æ(escape) shell ªºÂàĶ¡CÁ|¨Ò¨Ó»¡¡A echo $TERM ·|¦L¥X§A¥Ø«e³]©wªº²×ºÝ¾÷®æ¦¡¡A echo \$TERM «h·|ª½±µ¦L¥X $TERM ³o´X­Ó¦r¡C

3.9.1 Åܧó§Aªº Shell

Åܧó shell ³Ì²³æªº¤èªk´N¬O³z¹L chsh ©R¥O¡C °õ¦æ chsh ±N·|©I¥sÀô¹ÒÅܼƤ¤ EDITOR «ü©wªº¤å¦r½s¿è¾¹¡C ¦pªG¨S¦³³]©w¡A«h¹w³]¬O vi¡C ½Ð¨Ì·Ó»Ý¨D¥h­×§ï ¡§Shell:¡¨ ªº­È¡C

§A¤]¥i¥H³z¹L chsh ªº°Ñ¼Æ -s¡A ³o¥i¥Hª½±µ³]©w§Aªº shell ¦Ó¤£»Ý­n³z¹L¥ô¦ó¤å¦r½s¿è¾¹¡C ¨Ò¦p¡A °²³]·Q§â©Ò¥Îªº shell §ï¬° bash¡A ¥i¥H³z¹L¤U¦Cªº¤è¦¡¡G

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

Note: §A©Ò¨Ï¥Îªº shell ¥²¶· ¦C©ó /etc/shells ¸ÌÀY¡C ¦pªG¬O¥Ñ Ports Collection ¨Ó¸Ë shell¡A ¨º³o­Ó¨BÆJ¤w¸g§¹¦¨¤F¡C ¦ý­Y¬O¤â°Ê¦w¸Ë¤F¤@­Ó shell¡A ¨º»ò´N¥²¶·¬°·s¦w¸Ëªº shell ¶i¦æ³]©w¡C

Á|¨Ò¨Ó»¡¡A­Y¤â°Ê¦w¸Ë¤F bash ¨Ã±N¥¦¸m©ó /usr/local/bin ©³¤U¡A§AÁÙ±o¡G

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

µM«á¦A­«·s°õ¦æ chsh¡C

¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C