BBS水木清华站∶精华区

发信人: wordstar.bbs@bbs.ncic.ac.cn (倒骑麟), 信区: Unix 
标  题: Unix使用技巧(三):如何让提示符中包含当前路径 
发信站: 国家智能机中心曙光站 (Wed Jun  5 11:15:38 1996) 
转信站: SMTH!sunrise.pku.edu.cn!emerald.ncic.ac.cn!ncicbbs 
 
 
    用惯了DOS的伙计刚用Unix时最想干的事情就是想把Unix搞得像DOS一些, 
其中的一条就是把Unix的提示符设置成$p$g那样的。下面就说一说做的方法。 
 
    不同的SHELL设置的方法不同,比较方便的是GNU bash(Bourne Again Shell) 
和ksh(Korn Shell)以及tcsh(csh的增强版,Linux中的csh就是到tcsh的一个 
符号连接)。普通的sh(Bourne Shell)和csh设置比较罗嗦。下面就一个一个的 
说各种Shell的设置方法: 
 
ksh: 
    由于ksh把提示符变量PS1作为一个特殊的变量看待,cd的时候ksh会自动更 
    新PS1的值所以只要简单的把当前路径对应的环境变量$PWD加到PS1里就行了: 
 
        PS1='$PWD $ ' 
 
sh: 
    由于Bourne Shell只把PS1作为一个普通的变量,而且不支持别名,因此无 
    法完美地实现DOS中相同的功能,解决的方法是重新定义一个命令(比如xcd) 
    将其实现为一个函数: 
 
        xcd() { cd $* ; PS1="`pwd` $ "; } 
 
    然后每次用xcd切换目录。 
 
csh: 
    csh虽然不对提示符变量$prompt作特殊处理,但它支持别名,可以修改一下 
    cd的语义,使其自动修改提示符: 
 
        alias setprompt 'set prompt="${cwd}% "' 
        setprompt# to set the initial prompt 
        alias cd 'chdir \!* && setprompt' 
 
bash: 
    bash提供了一些特殊的变量来支持提示符的设置,\w表示当前路径,并把 
    等同于$HOME的部分替换成~,以缩短提示符的长度。 
 
        PS1='\w $ ' 
 
    Linux中是把hostname也加上了: 
 
        PS1='\h:\w $ '          # \h 表示hostname 
 
    为了更象DOS,可以把不同的命令分得更清楚,我通常加上一个换行符: 
 
        PS1=' 
        \h:\w $ ' 
 
tcsh: 
    tcsh的做法类似于bash,只不过变量的名字不同: 
 
        set prompt='%~ '        # %~ 表示当前路径 
-- 
                “大成若缺,其用不弊,大盈若冲,其用不穷, 
                            大直若曲,大巧若拙,大辩若讷。” 
 
※ 来源:.国家智能中心曙光站 bbs.ncic.ac.cn.[FROM: jet] 

BBS水木清华站∶精华区