zshmisc
我的新 Debian Squeeze 安装的手册页如下SIMPLE PROMPT ESCAPES
:
%m
The hostname up to the first `.'. An integer may follow the '%' to specify how
many components of the hostname are desired. With a negative integer, trailing
components of the hostname are shown.
当我将其包含%2m
在提示符中时,我发现 OSX 和 Linux 之间存在不同的行为。
在 OSX (10.7.3) 上,运行 zsh 4.3.11,提示符的行为符合预期,显示系统主机名的两个主要部分。
在 Debian 上,运行 zsh 4.3.10,提示符仍然只显示裸主机名。hostname -f
在此系统上确认完整主机名设置正确。另请注意,此 zsh 版本的联机帮助页表示应支持 %2m。
有人对从哪里开始调试有什么建议吗?
答案1
快速浏览一下 zsh提示处理源码建议这%m
基于您的系统为gethostname
系统调用返回的内容。这就像hostname
没有-f
选择的情况下跑步一样。
我假设正在跑步hostname
没有 -f
返回 Debian 系统上的裸主机名?
您可以尝试更改主机名以包含域名。 Debian如何/更改主机名文档应该对此有所帮助。但也许某些 Debian 工具会假设您的主机名不包含域名,因此这可能是一个坏主意。
仅使用命令替换可能更有意义。
首先设置PROMPT_SUBST选项
setopt PROMPT_SUBST
然后您可以运行任何命令并将其输出放入提示符中,如下所示:
PS1='$(hostname -f)$ '
要仅获取主机名的前几个部分,您可以使用cut
,例如
PS1='$(hostname -f | cut -f 1-2 -d .)$ '
因为您的主机名不应该更改,所以您还可以通过仅运行命令一次并将其存储在变量中,然后使用该变量来提高效率,例如
HOSTANDSUBDOMAIN="$(hostname -f | cut -f 1-2 -d .)"
PS1="$HOSTANDSUBDOMAIN$ "