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就可以了