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

Ben*_*ams 18 ubuntu bash fqdn

我们在我的工作场所有单独的环境用于开发、测试、集成和登台。

在这些环境中,我们重载了 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: ~$ 
Run Code Online (Sandbox Code Playgroud)

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

是什么赋予了?

这些是 Ubuntu 10.04 主机,如果这有区别的话。

use*_*517 24

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

export PS1="\[\u@$(hostname -f): \w\]\$ "
Run Code Online (Sandbox Code Playgroud)

例如

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

编辑:

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

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


wom*_*ble 5

关于主机名的疯狂程度,无论是短还是长,一直都很难——所以我只是放弃并让一切都使用 FQDN 作为主机名......

我在我的环境中和你做同样的事情,但我在提示中砍掉了 FQDN,因为我知道我在哪个网站上,而且它节省了空间。我还根据环境对我的提示进行了颜色编码,因此当我在某个“重要”的地方做某事时,我会得到更好的警告。我还将路径与其他所有内容以空格分隔,以便轻松复制意大利面密码。我的股票片段/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
Run Code Online (Sandbox Code Playgroud)

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