Isso acontece porque HOSTNAME
mostrado em seu caminho é algo que não é tratado diretamente pelo comando hostname
nem reflete um estado real do que está dentro de /etc/hostname
. É uma variável que é configurada quando você faz login por /etc/profile
. Dê uma olhada em um pequeno pedaço deste arquivo:
HOSTNAME='/bin/hostname 2>/dev/null'
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
Veja a seguinte linha:
HOSTNAME='/bin/hostname 2>/dev/null'
Isto é o que "captura" o nome do host atual a ser usado pelo prompt do shell, e é por isso que todos os usuários conectados a esse host terão que efetuar logout e login novamente. Mas isso é apenas parte de como isso funciona. Você terá que olhar para o arquivo de login do shell específico (bash geralmente usa /etc/bashrc
) e você verá onde a variável de prompt PS1
é montada:
# System wide functions and aliases
# Environment stuff goes in /etc/profile
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
# are we an interactive shell?
if [ "$PS1" ]; then
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='printf "3]0;%s@%s:%s# wall "Hostname changed. Please logout and login again to have your prompt information updated"
7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "3]0;%s@%s:%s3\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
;;
esac
fi
A variável
HOSTNAME
que foi exportada em /etc/profile
é usada aqui :). Dê uma olhada em bash(1)
, INVOCATION
seção.
Não há uma resposta simples para a sua pergunta, mas o que eu posso sugerir é: use o comando wall
para informar a todos a mudança:
HOSTNAME='/bin/hostname 2>/dev/null'
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL