Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1479517
  • 博文数量: 217
  • 博客积分: 4362
  • 博客等级: 上校
  • 技术积分: 4179
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-20 09:31
文章分类

全部博文(217)

文章存档

2017年(1)

2015年(2)

2014年(2)

2013年(6)

2012年(42)

2011年(119)

2010年(28)

2009年(17)

分类: Python/Ruby

2011-07-29 09:11:57

    在shell中,有两个环境变量,这两个环境变量分别是$PS1和$PS2,这两个变量分别代表什么意思呢?其实这两个变量都和shell下的命令行提示符有关。我们先看一下一个shell命令的执行:
  1. ^_^[sunny@sunny-laptop ~/summer/semaphore]10$ cat sem\
  2. >>>>create.c
  3. #include
  4. #include
  5. #include
  6. #include

  7. int main()
  8. {
  9. return 0;
  10. }
  11. ^_^[sunny@sunny-laptop ~/summer/semaphore]11$
    为了做测试,我现在想查看semcreate.c中的文件内容,我并没有把semcreate.c文件名字一口气输入完毕,而是把这个文件的名字输入了一部分,然后键入"\"符,这个符号的目的和我们c语言程序中的表示的含义是一样的,都表示这条语句或者命令没有输入完毕,下面这一行仍然是这条命令的补充,有了这个规则之后,当我们在终端中输入一条过长的命令的时候,就不必担心我们的命令太长,一行显示不下了。
    说到这里,我们的PS1和PS2这两个环境变量应该登场了。我们可以在终端下查看这两个环境变量所代表的值,下面是我的ubuntu 10.04下的查看结果:
  1. ^_^[sunny@sunny-laptop ~/summer/semaphore]12$ echo $PS1
  2. \[\e]0;\u@\h: \w\a\]`if [ $? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi`[\u@\h \w]\#$
  3. ^_^[sunny@sunny-laptop ~/summer/semaphore]13$ echo $PS2
  4. >>>>
  5. ^_^[sunny@sunny-laptop ~/summer/semaphore]14$
    对于PS1,每个版本bashPS1变量内的特殊符号可能有些小的差异,你可以先man bash 一下。下面是FC4环境下默认的特殊符号所代表的意义:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H 
:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4.linux则被省略
\t 
:显示时间为24小时格式,如:HHMMSS
\T 
:显示时间为12小时格式

\A 
:显示时间为24小时格式:HHMM
\u 
:当前用户的账号名称

\v 
BASH的版本信息
\w 
:完整的工作目录名称。家目录会以 ~代替
\W 
:利用basename取得工作目录名称,所以只会列出最后一个目录
\# 
:下达的第几个命令
\$ 
:提示字符,如果是root时,提示符为:#   ,普通用户则为:$
    默认的PS1内容为: '\[\u@\h\W\]\$' ,所以默认的提示符就是: [root@linux ~]#
    PS2的话,就是你第一行没有输入完,然后第二行输出来的提示符号。也就是说,PS1是第一行的提示符号,PS2是第二行的输出提示符号。
    下面我们需要对这两个变量的值进行修改,在文件
^_^[sunny@sunny-laptop ~]22$ cd ~
^_^[sunny@sunny-laptop ~]23$ vim .bashrc
中的
  1. if [ "$color_prompt" = yes ]; then
  2. PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\03 3[00m\]\$ '
  3. else
  4. PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
  5. fi
    改为你想要的值,例如我电脑上的值我改成了这样,所以大家就看到我电脑上的shell提示符是不一样的了。
  1. echo "Hello, you should study harder and harder!"
  2. PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@ \h \w]\#\$ "
  3. PS2=">>>>"
    当然你可以改为你自己喜欢的命令提示符。我们甚至可以在这个设置的前面加一个shell脚本,比如让每次打开一个shell之后,显示一句话,这个时候就像
echo "Hello, you should study harder and harder!"
哪句话一样,下次打开shell的时候会提示这句话的。

阅读(3311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~