$PS1 中的 $RANDOM 未更新

$PS1 中的 $RANDOM 未更新

我目前正在尝试创建一个自定义的 bash 提示符,但是$RANDOM它的行为并不像我预期的那样,我希望这里有人可以解释为什么它的行为是这样的。

我目前有一个非常简单的 bash 脚本,我们称之为test.sh

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

PS1="\$(__showPrompt)"

现在,当我运行时,source test.sh我的提示将变成我期望的日期和两个随机数的输出。

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

但在此之后,当我运行命令并重新运行提示时,我会获得更新的时间戳,但值$RANDOM保持不变

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

如果我手动运行,__showPrompt值会更新

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

更奇怪的是,我的提示更新为相同的值。如果我echo $RANDOM在终端中运行,情况也是如此,这又导致我的提示随机值发生变化(然后卡住)。

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

我不确定发生了什么,但在我看来,$RANDOM只有在实际终端中运行时才会播种,而永远不会在里面运行$PS1

希望任何比我更了解 b

备注:我在用的是 MacOS,但我认为这里不会有太大的区别。

相关内容