选项在zsh脚本中不起作用

选项在zsh脚本中不起作用,zsh,options,Zsh,Options,这似乎不是一个常见的问题,但我无法让ZSH选项在ZSH脚本中工作,例如,autocd: #!/usr/bin/env zsh setopt autocd my_directory 我只是得到“command my_directory not existence”,这是未设置该选项时发生的情况。在脚本中设置选项的搜索结果并不多(这个问题似乎很独特),这表明我遗漏了一些我还没有看到的关键信息 谢谢 查看Src/exec.c中的源代码(来自2014年11月7日最新的git版本,HEAD=36b8f

这似乎不是一个常见的问题,但我无法让ZSH选项在ZSH脚本中工作,例如,
autocd

#!/usr/bin/env zsh

setopt autocd
my_directory
我只是得到“command my_directory not existence”,这是未设置该选项时发生的情况。在脚本中设置选项的搜索结果并不多(这个问题似乎很独特),这表明我遗漏了一些我还没有看到的关键信息


谢谢

查看Src/exec.c中的源代码(来自2014年11月7日最新的
git
版本,HEAD=36b8f83),我在第2854行看到:

    char trycd = (isset(AUTOCD) && isset(SHINSTDIN) &&
                  (!redir || empty(redir)) && args && !empty(args) &&
                  !nextnode(firstnode(args)) && *(char *)peekfirst(args));
从这一点来看,(尽管我没有找到文档),也必须将
SHINSTDIN
选项设置为
AUTOCD
才能工作。但是,您不能简单地在脚本中启用此选项(例如,通过向shebang添加
-s
),因为这样运行脚本的shell就不会从脚本中读取命令

我不知道阻止
AUTOCD
在没有
SHINSTDIN
的情况下工作是否是一个bug,或者是否有未记录的原因说明它必须是真的;对于zsh员工邮件列表来说,这是一个很好的问题