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.
Tags command-line bash terminal macos