I've looked into
~/.bashrc
and~/.profile
and it seems to have a lot ofPS1
assignments. Does it get redefined there and if it does, how to prevent this from happening?
Sim, é redefinido. Ambos os métodos definem a variável inicialmente, mas não importa uma vez bash
origina qualquer arquivo que redefina PS1
.
Para evitar que isso aconteça,
- ou faça o controle remoto
bash
detectar se você está conectado comssh
e não alterarPS1
neste caso; isso pode exigir grandes mudanças nesses arquivos originados e você não quer fazer isso; - ou permite que o controle remoto
bash
definaPS1
de qualquer forma atual, mas substitua no final ; este parece ser um método muito melhor.
Adicione a seguinte linha no final do seu .bashrc
na máquina remota:
[ -n "$PS1_ovrrde" ] && PS1="$PS1_ovrrde"
Agora, tudo o que você precisa fazer é definir PS1_ovrrde
no lado remoto quando fizer login via SSH. Você já conhece duas maneiras. Notas:
- Com
SendEnv
você precisa dePS1_ovrrde
para estar em seu ambiente local, eu acho. Adicioneexport PS1_ovrrde="$PS1"
no final do seu local.bashrc
. - Com
exec bash
, você precisa exportarPS1_ovrrde
para o ambiente remoto:ssh host -t "export PS1_ovrrde=..."
. Variáveis que já estão no ambiente remoto não precisam ser exportadas novamente, mas aqui você está criando uma nova variável.