Você deve definir apenas
HOSTNAME=$(hostname)
no seu ~/.zshrc
Ou, como Caleb apontou, há um conjunto de HOST variável, portanto, para manter seu prompt portátil, você também pode fazer:
HOSTNAME=$HOST
Em bash
, que define $ HOSTNAME para você, consegui calcular o comprimento total da linha de prompt simplesmente usando algo como:
PS1_length=$((${#USER}+${#HOSTNAME}+${#PWDNAME}+12+${#PS1_GIT}))
Foi útil, e. ao criar a linha de preenchimento assim:
No entanto, zsh
não consegue definir $HOSTNAME
corretamente e não consigo pensar em uma maneira de imitar o comportamento semelhante - quaisquer pensamentos?
zsh
permite que você faça esse aviso sem precisar fazer nenhum cálculo:
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}'
Explicado:
%$COLUMNS>╡>
: truncar à direita para $COLUMNS
(uma variável definida dinamicamente por zsh
para a largura do terminal) a parte até o próximo %<<
. %F{color}
: defina a cor do primeiro plano %n
, %m
, %~
: nome do usuário, nome da máquina (nome do host até o primeiro ponto), diretório atual com ~
-named-dirs. ${(l:COLUMNS::═:):-}
: preenche a string vazia ( ${:-}
) com $COLUMNS
length com ═
caracteres. %m
é como ${HOST%%.*}
. Se você quiser o nome completo do host ( $HOST
), use %M
.
Você está usando o nome da variável errada. A variável de ambiente $HOSTNAME
é geralmente definida pelas rotinas init do sistema host, mas nem sempre. No contexto de um perfil ZSH, você deve usar a variável de ambiente $HOST
, que é explicitamente definida pelo shell. De man zshall
:
PARAMETERS SET BY THE SHELL
[…]
HOST The current hostname.
Note nessa lista que $HOSTNAME
não é algo que o ZSH tenta definir, é apenas definido ou não no capricho do sistema init do seu sistema.
Observe também que $HOST
não é algo que você deve usar em scripts shell de plataforma cruzada se estiver esperando portabilidade para outros shells - nesse caso, o hostname
binário é provavelmente sua melhor aposta - mas no contexto de um O perfil do ZSH é a variável mais apropriada para usar.