Isto não parece ser um problema comum, mas não consigo que as opções do ZSH funcionem dentro de um script ZSH, por ex. autocd
:
#!/usr/bin/env zsh
setopt autocd
my_directory
Acabei de receber "comando my_directory não existe",que é o que acontece quando essa opção não é definida. O fato de eu não obter muitos resultados de pesquisa para definir opções dentro de scripts (e essa pergunta parece ser única) sugere que estou perdendo algumas informações cruciais que eu tenho não visto ainda.
Obrigado!
Respostas:
0 para resposta № 1Olhando para o código fonte (do mais recente git
versão, HEAD = 36b8f83 em 7 de novembro de 2014), em Src / exec.c, vejo isso na linha 2854:
char trycd = (isset(AUTOCD) && isset(SHINSTDIN) &&
(!redir || empty(redir)) && args && !empty(args) &&
!nextnode(firstnode(args)) && *(char *)peekfirst(args));
A partir disso, parece (embora não documentado que eu possa encontrar) que o SHINSTDIN
opção também deve ser definida para AUTOCD
trabalhar. No entanto, você não pode simplesmente ativar essa opção em um script (adicionando -s
para o shebang, por exemplo), porque então o shell executando o script não lerá os comandos do script.
Eu não sei se estou impedindo AUTOCD
de trabalhar sem SHINSTDIN
é um bug, ou se houver uma razão não documentada, por que deve ser verdade; essa seria uma boa pergunta para a lista de discussão zsh-workers.