~ / .bashrc script não é executado corretamente no login ssh, funciona corretamente com o source ~ / .bashrc

1

Para acompanhar qual conexão ssh eu abri em diferentes abas, eu uso o seguinte script ~ / .bashrc:

function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$@\a\]"
  PS1=${ORIG}${TITLE}
}
set-title <SERVERNAME>;
echo "set-title <SERVERNAME>"

Eu faço isso para minhas guias que eu não tenho ssh aberto (com set-title LOCAL; ) e em dois servidores diferentes. Em um servidor, ele faz exatamente o que eu quero fazer e altera o nome da guia, mas no outro servidor ele não muda.

Quando digito set-title <SERVERNAME>; na linha de comando, ele altera o nome da guia e, quando faz o login, echo "set-title <SERVERNAME>" . Além disso, se eu fizer source ~/.bashrc , ele funcionará como esperado, portanto, é apenas ao fazer login no servidor que ele não funciona.

No servidor em que ele funciona no login, é executado Scientific Linux release 6.7 (Carbon) , no servidor em que ele não funciona, é executado CentOS release 6.6 (Final) . O que poderia fazer com que o set-title <SERVERNAME>; no script .bashrc não fosse executado corretamente no login?

    
por Niek de Klein 17.09.2015 / 10:07

1 resposta

2

Sem mais informações, não é possível responder a esta pergunta.

No entanto, imagino que o cenário mais provável seja que .bashrc seja originado no login por .bash_profile ou .profile - provavelmente algo semelhante a isto:

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

Eu acho que no sistema em que o título não está sendo definido, a variável PS está sendo definida para outro valor em um estágio posterior no script de logon.

A variável PS1 deve realmente ser definida no perfil de Bash ( .bash_profile ou .profile ) que é executado somente no login e a variável deve ser exported ed como uma variável de ambiente para que seu valor seja herdado por qualquer sub-shells.

PS1=${ORIG}${TITLE}
export PS1

ou para usar uma mão curta que funcione para o shell Bash:

export PS1=${ORIG}${TITLE}
    
por 17.09.2015 / 10:24