Shell

如何在 zsh 中設置 HOSTNAME?

  • January 23, 2021

在為您設置的 Bash 中$HOSTNAME,我可以簡單地使用以下方法計算提示行的總長度: PS1_length=$((${#USER}+${#HOSTNAME}+${#PWDNAME}+12+${#PS1_GIT}))

它很有用,例如在創建這樣的填充線時:在此處輸入圖像描述

但是zsh無法$HOSTNAME正確設置,我想不出一種方法來模擬其中的類似行為——有什麼想法嗎?

你應該設置

HOSTNAME=$(hostname)

在你的~/.zshrc

或者正如 Caleb 指出的那樣,有一個變數 HOST 集,所以為了保持提示的可移植性,您還可以這樣做:

HOSTNAME=$HOST

zsh提示擴展使您無需進行任何計算即可執行該提示:

PS1='%$COLUMNS>╡>%F{cyan}╔╡%F{red}[%n]%F{cyan}:%F{yellow}[%m]%F{cyan}➾%F{green}[%~]%F{default}$PS1_GIT%F{cyan}${(l:COLUMNS::═:):-}%<<
╚═╡%F{default}'

解釋:

  • %$COLUMNS>╡>: 右截斷到$COLUMNSzsh根據終端寬度動態設置的變數)到下一個部分%<<
  • %F{color}: 設置前景色
  • %n, %m, %~: 使用者名,機器名(主機名直到第一個點),帶有~-named-dirs的目前目錄。
  • ${(l:COLUMNS::═:):-}``${:-}: 將空字元串 ( )左填充到字元$COLUMNS長度

%m就像${HOST%%.*}。如果您想要完整的主機名 ( $HOST),請%M改用。

引用自:https://unix.stackexchange.com/questions/209390