La zshmisc
pá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 %2m
en 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 -f
en 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 %m
se basa en lo que su sistema devuelve para la gethostname
llamada al sistema. Eso es como correr hostname
sin la -f
opció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$ "