IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    hostname显示问题

    cjhust发表于 2014-11-04 20:56:57
    love 0

    1、问题描述

    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

    2、解决方案

    后来同事提醒我,看看PS1环境变量是什么,发现root用户下PS1在/root/.bashrc被显示export了,而admin用户下PS1使用的是/etc/bashrc配置。

    image

    image

    备注:将\h替换成\H即可解决问题。

    3、基本原理

    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时,提示符为:# ,普通用户则为:$,需要”\\$”;



沪ICP备19023445号-2号
友情链接