ssh到一台主机的时候,主机名显示不完全,比如要ssh hello-1.zue,显示的时候总是hello-1,有个奇怪的现象su admin进去以后,发现是hello-1.zue。
#hostname
#cat /proc/sys/kernel/hostname
#cat /etc/sysconfig/network
备注:三种方式显示出来都是hello-1.zue
后来同事提醒我,看看PS1环境变量是什么,发现root用户下PS1在/root/.bashrc被显示export了,而admin用户下PS1使用的是/etc/bashrc配置。
备注:将\h替换成\H即可解决问题。
PS1:就是用户平时的提示符。
PS2:第一行没输完,等待第二行输入的提示符。
Linux系统提示符是用系统变量PS1来定义的,一般系统默认的形式是:[username@host 工作目录]$,用echo $PS1能够得到PS1的值,即PS1="\u@\h \w]$ "
PS1是在用户根目录下的.bash_profile中定义的,个人认为比较好的提示符格式是:export PS1='\n\e[1;37m[\e[m\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m \e[4m`pwd`\e[m\e[1;37m]\e[m\e[1;36m\e[m\n\$'
\v:显示 bash 版本号,例:PS1="\v >" 结果:3.2.25 >
\d:显示系统日期,格式:星期 日期,例:PS1="\d >" 结果:六 10月 24 >
\A:显示系统时间,格式:HH:MM,例:PS1="\A >" 结果:21:04 >
\t:显示系统时间,格式:HH:MM:SS (24小时制),例:PS1="\t >" 结果:21:04:32 >
\T:显示系统时间,格式:HH:MM:SS (12小时制),例:PS1="\T >" 结果:09:04:32 >
\h:显示主机名称(简称),例:PS1="\h >" 结果:CentOS >
\H:显示主机名称(全称),例:PS1="\H >" 结果:CentOS.localdomain >
备注:这里对主机名称说明一下,如果查看本机主机名称,直接执行命令hostname,如果想修改主机名称,则要以root用户权限,对 /etc/sysconfig/network 文件进行修改。
\u:显示用户名称,例:PS1="\u >" 结果:root >
\w:完整的工作目录名称,根目录会以 ~代替,例:当前路径 /root/test,PS1="\w >" 结果:~/test >,可以用`pwd`代替更好;
\W :显示以 "basename" 命令取得路径信息的最底层目录名称,例:当前路径 /root/test,PS1="\W >" 结果:test >;
\# :显示当前用户要求系统执行的命令的序号;
例:执行 PS1="\u \# >" 结果:root 1 >
再执行 ls -la 结果:root 2 >
\$:提示字符,如果是root时,提示符为:# ,普通用户则为:$,需要”\\$”;