Linux下SHELL的PS1变量简介

来源:岁月联盟 编辑:exp 时间:2012-04-06
 Linux环境变量中PS1是很重要的环境变量: PS(Prompt Sign): 是指命令提示符,例如在Fedora 12的终端下:[liutao@liutao ~]$  ,在设定PS1环境变量时,我们需要用到预设的一些特殊符号来设定PS1,下面是鸟哥书上关于BASH的特殊变量。 o /d :代表日期,格式为 Weekday Month Date,例如 "Mon Aug 1" o /H :完整的主机名称。举例来说,鸟哥的练习机 linux.dmtsai.tw ,那么这个主机名称就是 linux.dmtsai.tw  www.2cto.com   o  /h :仅取主机名称的第一个名字。以上述来讲,就是 linux 而已, .dmtsai.tw 被省略。 o /t :显示时间,为 24 小时格式,如: HH:MM:SS o /T :显示时间,12 小时的时间格式! o /A :显示时间,24 小时格式, HH:MM o /u :目前使用者的账号名称; o /v :BASH 的版本信息; o /w :完整的工作目录名称。家目录会以 ~ 取代; o /W :利用 basename 取得工作目录名称,所以仅会列出最后一个目录名。 o /# :下达的第几个指令。 o /$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $ 。 Fedora 12下,PS1 内容为:                     

    鸟哥书上的例子为:              [root@linux /home/dmtsai 16:50 #12]#                                               PS1='[/u@/h /w /A #/#]/$ ' 在Fedora 12上的实现:         

 在上例中我们看出了,PS1在赋值的时用了单引号(‘),下面我们将讨论下在SHELL变量赋值,先看鸟哥书上的变量赋值: 1. 变量与变量内容以等号( = )来连结; 2. 等号两边不能直接接空格符; 3. 变量名称只能是英文字母与数字,但是数字不能是开头字符; 4. 若在赋值中有空格符可以使用双引号或单引号来将变量内容结合起来,但须要特别留意, 双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符; 5. 必要时需要以反斜杠(/)来将特殊符号 ( 如 Enter, $, /, 空格符, ' 等 ) 变成一般符号; 6. 在一串指令中,还需要藉由其它的指令提供的信息,可以使用引用字符(` command` );(特别特别注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号!)  www.2cto.com   7. 若该变量为扩增变量内容时,则需以双引号及 $变量名称 如: "$PATH":/home继续累加内容; 8. 若该变量需要在其它子程序执行,则需要以 export 来使变量变成环境变量, 如export PATH 9. 通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断 ( 纯粹依照使用者兴趣与嗜好 ) ; 10. 取消变量的方法为: unset 变量名称。 那么在PS1的设置中,因为中间有空格,所以我们需要用单双引号,没有与需要用到命令的结果,所以不需要引用。而我们选择单引号是为了让PS1直接接受纯字符,而不是在SHELL中有特殊意义的字符,或者以$开头的变量,所以我们用单引号即可,当让也可以用双引号。   作者 wendaotao