我目前正在尝试创建一个自定义的 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,但我认为这里不会有太大的区别。