2014-11-06 24 views
1

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

#!/usr/bin/env zsh 

setopt autocd 
my_directory 

我只是得到“命令my_directory不存在”,这是在没有设置该选项会发生什么。事实上,我没有在脚本中设置选项的许多搜索结果(这个问题似乎是唯一的)表明我错过了一些我还没有看到的关键信息。

谢谢!

回答

0

查看源代码(从最新版本git,HEAD = 36b8f83上2014年11月7日),在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邮件列表来说是个好问题。