shell 命令提示符

Linux是个多用户操作系统,可以同时登陆多个用户,对于登陆系统的每一个用户,Linux系统一般都会启动一个默认的shell解释器来跟用户交互,不同的用户可以指定自己的shell解释器,在/etc/passwd文件下,有各个用户的账户密码配置,包括指定的默认shell解释器:

root:x:0:0:root:/root:/bin/bash
zhaixue:x:1000:1000:zhaixue.cc,,,:/home/zhaixue:/bin/bash
tftp:x:127:134:tftp daemon,,,:/srv/tftp:/usr/sbin/nologin
statd:x:129:65534::/var/lib/nfs:/usr/sbin/nologin

对于一些特殊的用户,比如用来TFTP服务、NFS服务的用户,它们主要用来使用系统的某一项资源,它们一般不需要启动bash这个服务,所以一般将这个shell选项设置成nologin。

对于普通的用户,启动Bash程序后,一般会有一个$的提示符,表示当前用户是普通用户

zhaixue@ubuntu:~$

而对于超级权限用户:root用户,一般会有一个#的提示符,表示当前用户是超级权限用户

wit@pc:~#

修改命令提示符

在Ubuntu环境下,以笔者的虚拟机为例,使用普通用户(zhaixue.cc)登录时,打开一个shell终端,对应的提示符格式为:

zhaixue@ubuntu:~$ pwd
/home/zhaixue
zhaixue@ubuntu:~$ echo $HOME
/home/zhaixue
zhaixue@ubuntu:~$ cd /home/linux-5.10-rc3/
zhaixue@ubuntu:/home/linux-5.10-rc3$

打开一个shell终端,默认打开目录路径为~,即$HOME的值,显示颜色为蓝色,这个值在不用的用户登录下不一样,总之会对应登录用户的家目录。$提示符表示当前是普通用户,只能对$HOME下的文件进行读写操作,对系统其它目录下的文件只有读的权限。@前面的绿色字符串表示当前用户,@后面的绿色字符串表示当前系统。

shell的终端提示符格式是由~/.bashrc文件中的命令提示符环境变量PS1指定的:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

其中@前面的\u表示当前用户名称,\h表示主机名称,\w表示工作目录,每个选项前的[\033[01;32m]用来指定显示的颜色,大家可以根据自己的爱好,定制自己的颜色。当打开的工作目录很深时,命令提示符就会很长,留给后续命令的输入空间很少了,此时你可以删除一些必要的显示选项。比如我的root用户就设置得很短,修改/root/.bashrc中的PS1变量:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@pc\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

然后在shell终端下切换到root用户,我的shell终端的命令提示符就变成了下面的样子,而且跟普通用户一样,可以彩色显示:

zhaixue@ubuntu:~$ su
Password: 
root@pc:/home/zhaixue# cd ~
root@pc:~# pwd
/root
root@pc:~#

shell显示颜色表

字体颜色 字体背景颜色 显示方式
30:黑色 40:黑色 0:默认配置
31:红色 41:深红色 1:高亮显示
32:绿色 42:绿色 4:下划线
33:黄色 43:黄色 5:闪烁
34:蓝色 44:蓝色 7:反白显示
35:紫色 45:紫色 8:隐藏
36:深绿色 46:深绿
37:白色 47:白色
显示举例:
\033[1;32;40m   1是高亮显示,可选;31设置字体颜色为绿色;40m是字体背景颜色
\033[0m         0表示恢复终端默认颜色
\[\033[01;32m\]\u@pc 设置用户名为字体颜色为绿色
\[\033[00m\]:        设置冒号分隔符:颜色为默认颜色,即白色
\[\033[01;34m\]\w    设置路径名称为蓝色
echo -e "\033[01;34mhello"  将字符串hello显示为蓝色

思考:如何通过shell配置文件,来指定不同用户指定的shell?修改/etc/passwd就可以了

《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客