这似乎不是一个常见问题,但我无法让ZSH选项在ZSH脚本中工作,例如autocd
:
#!/usr/bin/env zsh
setopt autocd
my_directory
我刚刚得到命令my_directory不存在',这是当该选项未设置时发生的情况。事实上,我没有获得许多搜索结果来设置脚本内的选项(这个问题似乎是独一无二的)这表明我错过了一些我尚未见过的关键信息。
谢谢!
答案 0 :(得分:0)
查看源代码(来自2014年11月7日的最新git
版本,HEAD = 36b8f83),在Src / exec.c中,我在第2854行看到了这一点:
char trycd = (isset(AUTOCD) && isset(SHINSTDIN) &&
(!redir || empty(redir)) && args && !empty(args) &&
!nextnode(firstnode(args)) && *(char *)peekfirst(args));
由此看来,SHINSTDIN
选项也必须设置AUTOCD
选项才能正常工作(尽管我没有记录)。但是,您不能简单地在脚本中启用此选项(例如,通过将-s
添加到shebang),因为运行脚本的shell将不会从脚本中读取命令。
我不知道是否阻止AUTOCD
在没有SHINSTDIN
的情况下工作是一个错误,或者如果有一个无证的理由,为什么它必须是真的;这对于zsh-workers邮件列表来说是一个很好的问题。