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$ "