我刚刚遇到了 PS1 变量。只需更改此变量值即可更改提示,例如:
PS1="\h"
hostname as Prompt
PS1="\j"
numbers of current jobs as Prompt
PS1="\t"
current time as Prompt
PS!="\j running on \h :"
or more complex string with many substitutions
现在,由于存在类似不占用 shell 的后台进程,我想是否可以编写一个脚本,每 5 秒更改一次 PS1 的值,该脚本可以在后台运行整个时间。
伪脚本:
Repeat
{
PS1="\j jobs"
sleep 5 seconds
PS1="time: \t"
sleep 5 seconds
PS1="Command History: \!"
sleep 5 seconds
}
如果可以的话,你会如何在 bash shell 脚本中实现它?
答案1
我认为这是不可能的,即使您将上述伪代码合并到 shell 脚本中,因为每次调用 shell 脚本时,它都会启动自己的子 shell,这些事情将在其中发生,而不是您想要的地方它到(你的主外壳)。即使您在后台启动它。 (脚本.sh &)
答案2
常见的 UNIX shell(bash、[pd]ksh、[t]csh)都没有自己的 cron 内部类似物,以便根据您的意愿执行自动后台任务。
但即使他们这样做了,在您运行命令并且它返回到提示符后,显示提示符的字符输出也是静态的,而不是动态的。如果你坐在那里观看,它不会像你想象的那样每 5 秒循环一次你的 PS1 选项。直到您按 Enter 键或运行另一个命令后,您才会看到新的提示。
然而,您也许能够通过使用具有“任务栏”功能的 GNU 屏幕来获得您正在寻找的内容。尝试从这。