Como alterar a string de prompt do bash na sessão bash atual? [duplicado]

2

Eu tenho uma sequência de prompt do bash:

root@LAB-VM-host:~# echo "$PS1"
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 
root@LAB-VM-host:~# hostname 
LAB-VM-host
root@LAB-VM-host:~# 

Agora, se eu alterar o nome do host do comando LAB-VM-host para VM-host with hostname , a string de prompt para essa sessão bash não será alterada:

root@LAB-VM-host:~# hostname VM-host
root@LAB-VM-host:~# 

Existe uma maneira de atualizar a parte do nome do host da string de prompt do bash para a sessão bash atual ou se aplica apenas para novas sessões de bash?

    
por Martin 02.06.2015 / 15:02

3 respostas

3

O Debian realmente escolhe um nome de host alterado se PS1 é reexportado, como as outras respostas sugerem? Se sim, você pode atualizá-lo assim:

export PS1="$PS1"

Não sei sobre o debian, mas no OS X Mountain Lion isso não terá algum efeito. Nem a versão explícita sugerida em outras respostas (que é exatamente equivalente ao acima).

Mesmo que isso funcione, o prompt deve ser redefinido separadamente em cada shell em execução. Nesse caso, por que não apenas configurá-lo manualmente para o novo nome de host? Ou apenas inicie um novo shell (como um subshell com bash ou substitua o processo em execução por exec bash ) - o nome do host será atualizado.

Para rastrear automaticamente as alterações do nome do host em todos os shells em execução , defina seu prompt assim em .bashrc :

export PS1='\u@$(hostname):\w\$ '

ou no seu caso:

export PS1='${debian_chroot:+($debian_chroot)}\u@$(hostname):\w\$ '

Ou seja, substitua \h no seu prompt por $(hostname) e verifique se ele está entre aspas simples. Isso executará hostname antes de cada prompt ser impresso, mas e daí. Não vai deixar o computador de joelhos.

    
por 02.06.2015 / 17:19
1

O nome do host não é atualizado automaticamente no prompt. Você precisa reexportar a variável $PS1 :

export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' 

Esta variável já está definida em seu .bashrc ou outro arquivo de configuração BASH, conforme mostrado pelas linhas # 1 e # 2 de sua saída. Mas depois de modificar o nome do host, você precisa reexportar a variável com o comando acima, se quiser que o novo prompt seja atualizado.

    
por 02.06.2015 / 15:07
0

De acordo com dr01 disse: Você precisa usar:

export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' 

Mas a linha acima é temporariamente, se você quiser usar perenemente, você tem que usar a linha acima no seu .bashrc ou .profile

    
por 02.06.2015 / 15:14