用户通过远程登陆,初始的PS1为\s-\v\$, bash为/bin/bash,然后先后执行/etc/profile和~/.bash_profile中的命令。
/etc/profile文件中调用执行/etc/bash.bashrc,使得默认从终端登陆的PS1初始值设为
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
而用户通过图形界面新建shell,会先后读取/etc/bash.bashrc和~/.bashrc中的配置,由于$TERM为xterm-256color,所以会将PS1设为
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
以下为修改远程登陆shell时的bash命令提示符
vi ~/.bash_profile # 在 ~/.bash_profile中加入: export PS1="[\u@\h:\W]\\$" # 使配置立即生效 source ~/.bash_profile
如果要修改图形界面下bash命令提示符,只需要将 PS1="[\u@\h:\W]\\$" 让在.bashrc文件最后,或者做如下修改:
67 case "$TERM" in 68 xterm*|rxvt*) 69 # PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" 70 PS1="[\u@\h:\W]\\$" 71 ;; 72 *) 73 ;; 74 esac
参考: man bash 下的 INVOCATION
效果:
hupeng@hupeng-vm:~/WorkSpace/shell$ vi ~/.bashrc #未修改之前路径很长,从宿主目录~开始显示 hupeng@hupeng-vm:~/WorkSpace/shell$ cd test/ hupeng@hupeng-vm:~/WorkSpace/shell/test$ source ~/.bashrc #是修改立即生效 [hupeng@hupeng-vm test]$ #路径变短了,只显示路径的basename [hupeng@hupeng-vm shell]$#关于basename [hupeng@hupeng-vm shell]$pwd /home/hupeng/WorkSpace/shell [hupeng@hupeng-vm shell]$basename `pwd` shell [hupeng@hupeng-vm shell]$echo $PS1 [\u@\h \W]\$ [hupeng@hupeng-vm shell]$PS1="PROMPT>" PROMPT>PS1="[\u@\h \W]\$" [hupeng@hupeng-vm shell]$ #在shell中修改只能临时生效,要永久生效,必须修改配置文件
PS1以及相关特殊字符介绍:
可以 man bash 然后搜索PS1和PROMPTING
PS1被用作主要的提示字符串使用。
相关特殊字符:
\H: #完整的主机名称。 \h: #仅取主机的第一个名字,到“.”结束 \u: #当前用户的用户名 \w: #完整的工作目录名称。宿主目录(如/hom/peter)会以~代替 \W: #利用basename取得工作目录名称,所以只会列出最后一个目录 \$: #提示字符,如果是root时,提示符为:#,普通用户则为: \#: #显示命令的编号(如30,31...) \t: 显示时间为24小时格式,如:HH:MM:SS \T: #显示时间为12小时格式 \A: #显示时间为24小时格式: HH:MM \d: #代表日期,格式为weekday month date, 例如:"Tue May 26" \v: #bash的版本信息 (如4.3)