
Como fazer com que a string PS1 seja sempre reavaliada cada vez que o usuário insere a tecla Enter no prompt do shell?
real no meu:
n=A; PS1="$n"
n=B
O prompt continua mostrando A. Como resolver isso?
Responder1
Sua variável $PS1 está usando $n uma vez porque $n é avaliado e substituído por seu valor quando $PS1 é definido inicialmente. Isso ocorre porque você está usando aspas duplas; no bash, ele avalia as variáveis na string entre aspas duplas em uma atribuição.
Se você deseja que seu $PS1 reflita o valor atual de $n, você precisa colocar aspas simples em torno de $n ou escapar do cifrão.
Por exemplo:
PS1='$n'
Ou
PS1="\$n"