与我有一个类似的问题: zsh中不重新计算我的shell提示符
有没有什么办法来定义,使得它的值每次它被称为计算的shell变量?
例如,如果我这样做:
my_date="today is $(date)"
在my_date值将是:今天是星期四8月9日8时06分18秒PDT 2012
但我想用my_date每次执行的日期。 在链接后,有人建议把单引号中值:
my_date='today is $(date)'
但从来没有任何评价,只是在$(日期)从字面上保持。
我使用的zsh 5.0.0
这是不可能的。 使用函数:
my_date() {
echo "today is $(date)"
}
# use it
echo "$(my_date)"
注:这是bash的语法; 你的shell可能会使用一个稍微不同的语法。
你应该在第一种情况下也说过PS1:提示扩展是非常不同的比较变量扩展。 家伙,告诉你应该用PS1='$(command)'
单引号是正确的,但他缺少一点:你必须做
setopt promptsubst
以使在提示命令替换(和其他一些取代以及)。
不要紧,不管你之前或设置PS1后设置它,它应该只是显示被选中每次PS1扩展到实际及时提示,选项之前发生。
对于非提示变量@Aaron Digulla完全看错你暂时无法有可能对后续评估改变其值的变量。 但在zsh中,你还可以做两件事情:写一个模块(!在C),并使用${(%%)VAR}
这将做给定的变量(提示扩展注意事项:它尊重promptsubst和其他两个提示*选项)。 还有更多有用的${(...)}
扩展标志。