困惑是因为echo "PATH=$PATH:/usr/local/sbin"
没有(认为它与:
)有关。
此外,在 Bash 中,这两个命令都按我的预期工作。
$ echo "PATH=$PATH"
PATH=/usr/local/bin
$ echo "PATH=$PATH:/usr/local/sbin"
PATH=/usr/local/bin:/usr/local/sbin
$ echo "$USER:staff"
zsh: bad substitution
困惑是因为echo "PATH=$PATH:/usr/local/sbin"
没有(认为它与:
)有关。
此外,在 Bash 中,这两个命令都按我的预期工作。
$ echo "PATH=$PATH"
PATH=/usr/local/bin
$ echo "PATH=$PATH:/usr/local/sbin"
PATH=/usr/local/bin:/usr/local/sbin
$ echo "$USER:staff"
zsh: bad substitution
因为
:s
after$USER
被解释为扩展修饰符。如果您执行以下操作,您可以清楚地看到这一点:从上面的列表中可以看出,
:/
它不是扩展修饰符。不,通常只使用 就可以了
$USER
,但有时,如您所见,需要使用${USER}
。:)但是,关于您问题中的代码,我可以给您另外两个在 Zsh 中使用的建议:
$path
代替$PATH
和print
而不是echo
.