El escape del mensaje ZSH %m no funciona como se documenta en Debian Linux

El escape del mensaje ZSH %m no funciona como se documenta en Debian Linux

La zshmiscpágina de manual de mi nueva instalación de Debian Squeeze dice, en 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.

Cuando lo incluyo %2men mi mensaje, veo un comportamiento diferente entre OSX y Linux.

En OSX (10.7.3), al ejecutar zsh 4.3.11, el mensaje se comporta como se esperaba y muestra los dos componentes principales del nombre de host del sistema.

En Debian, al ejecutar zsh 4.3.10, el mensaje todavía solo muestra el nombre de host simple. hostname -fen este sistema confirma que el nombre de host completo está configurado correctamente. Tenga en cuenta también que la página de manual de esta versión de zsh dice que se debe admitir %2m.

¿Alguien tiene alguna sugerencia sobre dónde empezar a depurar esto?

Respuesta1

Un vistazo rápido a zshcódigo fuente de manejo rápidosugiere que %mse basa en lo que su sistema devuelve para la gethostnamellamada al sistema. Eso es como correr hostnamesin la -fopción.

Supongo que estoy corriendohostname sin -f¿Devuelve su nombre de host básico en su sistema Debian?

Podría intentar cambiar su nombre de host para incluir el nombre de dominio. El debianCómo/cambiar documentos de nombre de hostdebería ayudar con eso. Pero tal vez algunas herramientas de Debian asuman que su nombre de host no incluye el nombre de dominio, por lo que podría ser una mala idea.

Podría tener más sentido utilizar simplemente la sustitución de comandos.

Primero configure la opción PROMPT_SUBST

setopt PROMPT_SUBST

luego puede ejecutar cualquier comando y poner su resultado en el mensaje de esta manera:

PS1='$(hostname -f)$ '

para obtener solo las primeras partes del nombre de host, puede usarcut, p.ej

PS1='$(hostname -f | cut -f 1-2 -d .)$ '

Debido a que su nombre de host no debería cambiar, también podría ser un poco más eficiente ejecutando el comando solo una vez y almacenándolo en una variable, luego usando la variable, por ejemplo

HOSTANDSUBDOMAIN="$(hostname -f | cut -f 1-2 -d .)"
PS1="$HOSTANDSUBDOMAIN$ "

información relacionada