为什么 zsh在行首打印cmdand
for every ?&&
例如,当我将以下几行粘贴到 Z shell 中时
echo "foo" && echo "bar" && \
echo "buz" && \
echo "jam"
... zsh 将显示以下内容
echo "foo" && echo "bar" && \
cmdand cmdand> echo "buz" && \
cmdand cmdand cmdand> echo "jam"
因此 zsh 会为该行之前遇到的cmdand
每个添加一个。我刚刚注意到和 也有类似的情况。&&
||
cmdor
这有什么用呢?它不会让控制台变得混乱吗?这种行为可以控制吗?
我在 Mac OS 和 Ubuntu 上针对 zsh 版本 >5.x 观察到了这种行为。
答案1
它由环境变量的值控制PS2
,其默认值'%_> '
给出了此行为。其目的是显示您在多行命令中的位置(而不仅仅是以反斜杠结尾的行),例如,如果您在多行中输入条件命令,您将获得:-
$ if [ "$var" ]
if> then
then> echo var: $var
then> else
else> echo var: not set
else> fi
var: not set
$
shell 不区分键入的行和粘贴的行。
在每个连续行上设置PS2='> '
一个简单的。>
有关详细信息,请参阅手册man zshall
并搜索PS2
。