I've looked into
~/.bashrcand~/.profileand it seems to have a lot ofPS1assignments. 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
bashdetectar se você está conectado comsshe não alterarPS1neste caso; isso pode exigir grandes mudanças nesses arquivos originados e você não quer fazer isso; - ou permite que o controle remoto
bashdefinaPS1de 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
SendEnvvocê precisa dePS1_ovrrdepara estar em seu ambiente local, eu acho. Adicioneexport PS1_ovrrde="$PS1"no final do seu local.bashrc. - Com
exec bash, você precisa exportarPS1_ovrrdepara 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.