Ubuntu上的Bash提示-FQDN(\ H)与主机名(\ h)相同


14

我们在工作场所拥有单独的环境,用于开发,测试,集成和暂存。

在这些环境中,我们已经在DNS中超载了主机名-例如,在开发环境中,主Web机被称为web1.dev.example.com,在测试环境中,主Web机是web1.test.example.com

为了区分不同环境中的计算机,我想自定义bash提示以显示FQDN,而不仅仅是主机名。好,好;我应该可以\h\Hin 代替$PS1,对吗?嗯 它们显示出完全相同的东西。

me@web1:~$ hostname
web1
me@web1:~$ hostname -f
web1.dev.example.com
me@web1:~$ export PS1="\[\u@\h: \w\]\$ "
me@web1: ~$ export PS1="\[\u@\H: \w\]\$ "
me@web1: ~$ 

在中/etc/hostname,我只有主机名(web1)。hostname并且hostname -f都返回正确的结果(分别为“ web1”和“ web1.test.example.com”),并且我在中输入了正确的条目/etc/hosts

是什么赋予了?

这些是Ubuntu 10.04主机,如果有所不同。

Answers:


18

尝试使用显式调用来hostname -f获取系统的fqdn

export PS1="\[\u@$(hostname -f): \w\]\$ "

例如

iain$ export PS1="\[\u@$(hostname -f): \w\]\$ "
iain@ub10-04-1.lan: ~$ 

编辑:

进一步的研究表明/etc/hostname(Ubuntu)和/etc/sysconfig/network(CentOS)的内容是相关的。如果FQDN在文件中,则\H可以正常工作。

Ubuntu的hostname(1)手册页确实说您不应该将FQDN放在/ etc / hostname中,但是没有给出原因。


这是有点丑:(但它确实工作,我可能会离开这个打开的时间长一点,它会是非常好的有一个“干净”的修复。
本·威廉姆斯

这似乎与debian / ubuntu有关。它以centos预期的方式工作。
2011年

1
是的,这绝对是Ubuntu问题。我最终使用了您建议的解决方案;我真的应该将此报告为针对Ubuntu中的Bash的错误。
本·威廉姆斯

@BenWilliams:更新了答案,使它不那么难看。
user9517 2011年

我还在Ubuntu的主机名设置文档中发现了同样的歧义。不确定如何解决。
Dogweather

4

主机名的简短和疯狂的疯狂程度非常高,而且一直都很难做到这一点-所以我只是放弃了,让一切都使用FQDN作为主机名...

我在您的环境中执行与您相同的操作,但是由于我知道我在哪个站点上,所以我在提示中砍掉了FQDN ,这样可以节省空间。我还根据环境对提示进行了颜色编码,以便在执行“重要”操作时得到更好的警告。我还将路径与其他所有路径分隔开,以使复制粘贴pwd变得容易。我的库存摘要/etc/profile

if hostname -f | grep -q '\.stg\.example\.com'; then
  _ROOT_COLOR=33  # yellow
  _USER_COLOR=36  # cyan
else
  _ROOT_COLOR=31  # red
  _USER_COLOR=32  # green
fi

if [ "`id -u`" -eq 0 ]; then
  PS1="\[\033[01;${_ROOT_COLOR}m\]$(hostname -f|sed 's/\.example\.com//')\[\033[01;34m\] \w #\[\033[00m\] "
else
  PS1="\[\033[01;${_USER_COLOR}m\]\u@$(hostname -f|sed 's/\.example\.com//')\[\033[01;34m\] \w $\[\033[00m\] "
fi

而且,就“丑陋”而言,谁在乎显示提示的代码是什么样的?无论如何,大多数时候它都是只写代码。


1
+1用于颜色使用。
萨德·马苏德

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.