$ RANDOM em $ PS1 não é atualizado

1

No momento, estou tentando criar um prompt bash personalizado, mas $RANDOM não está se comportando como seria de se esperar, e espero que alguém aqui possa explicar por que está se comportando dessa maneira.

Atualmente tenho um script muito simples, vamos chamá-lo de test.sh

function __showPrompt() {
  echo "
  date: $(date)
  random 1: $RANDOM
  random 2: $RANDOM
  "
}

PS1="\$(__showPrompt)"

Agora, quando eu executar source test.sh my prompt se torna a saída da data e dois números aleatórios como seria de esperar.

date: Thu Aug  2 15:13:13 CEST 2018
random 1: 24379
random 2: 17139

Mas depois disso, quando executo um comando e o prompt é executado novamente, recebo e atualizo o registro de data e hora, mas o $RANDOM -value permanece o mesmo

date: Thu Aug  2 15:19:32 CEST 2018
random 1: 24379
random 2: 17139

Se eu executar manualmente __showPrompt , os valores são atualizados

date: Thu Aug  2 15:20:23 CEST 2018
random 1: 30953
random 2: 6153

E o que torna isso ainda mais estranho é que meu prompt atualiza os mesmos valores. O mesmo é verdadeiro se eu executar echo $RANDOM no terminal, o que faz com que meus valores aleatórios sejam alterados (e, em seguida, fiquem presos).

date: Thu Aug  2 15:23:02 CEST 2018
random 1: 30953
random 2: 6153


date: Thu Aug  2 15:23:02 CEST 2018
random 1: 30953
random 2: 6153

echo $RANDOM
30953

date: Thu Aug  2 15:23:08 CEST 2018
random 1: 6153
random 2: 32728


date: Thu Aug  2 15:23:10 CEST 2018
random 1: 6153
random 2: 32728

Não tenho certeza do que está acontecendo, mas parece-me que $RANDOM só é propagado se for executado em um terminal real e nunca dentro de $PS1 .

Espero que alguém com mais conhecimento bash do que eu possa explicar o que está acontecendo

Observação: Eu estou em um MacOS, mas não vejo que isso faça muita diferença aqui.

    
por Morten Olsen 02.08.2018 / 15:34

0 respostas