【发布时间】:2021-04-12 18:20:01
【问题描述】:
Zsh 不执行大括号扩展,但仅在使用 /bin/sh 链接调用时。
$ /bin/sh --version
zsh 5.8 (x86_64-apple-darwin20.0)
$ zsh --version
zsh 5.8 (x86_64-apple-darwin20.0)
$ /bin/sh -c "echo {1..3}"
{1..3}
$ zsh -c "echo {1..3}"
1 2 3
发生了什么事?
【问题讨论】:
-
与brace expansion not working on Dockerfile run command 或brace expansion not working in system() function 的根本原因相同;谁提供您的
sh并不重要,它仍然负责遵守 POSIX sh 标准,并且大括号扩展不是该标准的一部分。 -
@YOLT :直接通过
zsh调用它,而不是通过sh。 AFIK,zsh - 像 bash - 看看它是如何被调用的,并根据它在$0中找到的内容而表现出不同的行为。 -
有关
zsh以sh调用时禁用的详细信息,请参阅zsh.sourceforge.net/Doc/Release/Invocation.html#Compatibility -
为什么
/bin/sh是指向zsh的链接?在 Big Sur 之前肯定不是这种情况(如果这成为 Big Sur 的默认设置,我会感到非常惊讶)。
标签: shell sh zsh brace-expansion