/ / Opções não funcionam dentro do script zsh - zsh, opções

Opções não funcionam dentro do script zsh - zsh, opções

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 № 1

Olhando 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.