用惯了DOS的伙计刚用Unix时最想干的事情就是想把Unix搞得像DOS一些,
其中的一条就是把Unix的提示符设置成$p$g那样的。下面就说一说做的方法。
不同的SHELL设置的方法不同,比较方便的是GNUbash(BourneAgainShell)
和ksh(KornShell)以及tcsh(csh的增强版,Linux中的csh就是到tcsh的一个
符号连接)。普通的sh(BourneShell)和csh设置比较罗嗦。下面就一个一个的
说各种Shell的设置方法:
ksh:
由于ksh把提示符变量PS1作为一个特殊的变量看待,cd的时候ksh会自动更
新PS1的值所以只要简单的把当前路径对应的环境变量$PWD加到PS1里就行了:
PS1='$PWD$'
sh:
由于BourneShell只把PS1作为一个普通的变量,而且不支持别名,因此无
法完美地实现DOS中相同的功能,解决的方法是重新定义一个命令(比如xcd)
将其实现为一个函数:
xcd(){cd$*;PS1="`pwd`$";}
然后每次用xcd切换目录。
csh:
csh虽然不对提示符变量$prompt作特殊处理,但它支持别名,可以修改一下
cd的语义,使其自动修改提示符:
aliassetprompt'setprompt="${cwd}%"'
setprompt#tosettheinitialprompt
aliascd'chdir\!*&&setprompt'
bash:
bash提供了一些特殊的变量来支持提示符的设置,\w表示当前路径,并把
等同于$HOME的部分替换成~,以缩短提示符的长度。
PS1='\w$'
Linux中是把hostname也加上了:
PS1='\h:\w$'#\h表示hostname
为了更象DOS,可以把不同的命令分得更清楚,我通常加上一个换行符:
PS1='
\h:\w$'
tcsh:
tcsh的做法类似于bash,只不过变量的名字不同:
setprompt='%~'#%~表示当前路径
Sample:
Solaris中的不同做法:如何在命令行显示目录?
用惯了DOS的伙计刚用Unix时最想干的事情就是想把Unix搞得像DOS一些,
其中的一条就是把Unix的提示符设置成$p$g那样的。下面就说一说做的方法。
不同的SHELL设置的方法不同,比较方便的是GNUbash(BourneAgainShell)
和ksh(KornShell)以及tcsh(csh的增强版,Linux中的csh就是到tcsh的一个
符号连接)。普通的sh(BourneShell)和csh设置比较罗嗦。下面就一个一个的
说各种Shell的设置方法:
ksh:
由于ksh把提示符变量PS1作为一个特殊的变量看待,cd的时候ksh会自动更
新PS1的值所以只要简单的把当前路径对应的环境变量$PWD加到PS1里就行了:
PS1='$PWD$'
sh:
由于BourneShell只把PS1作为一个普通的变量,而且不支持别名,因此无
法完美地实现DOS中相同的功能,解决的方法是重新定义一个命令(比如xcd)
将其实现为一个函数:
xcd(){cd$*;PS1="`pwd`$";}
然后每次用xcd切换目录。
csh:
csh虽然不对提示符变量$prompt作特殊处理,但它支持别名,可以修改一下
cd的语义,使其自动修改提示符:
aliassetprompt'setprompt="${cwd}%"'
setprompt#tosettheinitialprompt
aliascd'chdir\!*&&setprompt'
bash:
bash提供了一些特殊的变量来支持提示符的设置,\w表示当前路径,并把
等同于$HOME的部分替换成~,以缩短提示符的长度。
PS1='\w$'
Linux中是把hostname也加上了:
PS1='\h:\w$'#\h表示hostname
为了更象DOS,可以把不同的命令分得更清楚,我通常加上一个换行符:
PS1='
\h:\w$'
tcsh:
tcsh的做法类似于bash,只不过变量的名字不同:
setprompt='%~'#%~表示当前路径
<script type="text/javascript"><!-- google_ad_client = "ca-pub-7104628658411459"; /* wide2 */ google_ad_slot = "5922063526"; google_ad_width = 468; google_ad_height = 60; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>