/ / Options ne fonctionnent pas dans le script zsh - zsh, options

Les options ne fonctionnent pas dans le script zsh - zsh, options

Cela ne semble pas être un problème commun, mais je ne peux pas obtenir les options ZSH pour travailler dans un script ZSH, par exemple autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

Je viens d'obtenir "la commande mon_répertoire n'existe pas",c'est ce qui se passe quand cette option n'est pas "configurée. Le fait que je ne reçois pas beaucoup de résultats de recherche pour définir des options dans les scripts (et cette question semble unique) suggère que pas encore vu.

Merci!

Réponses:

0 pour la réponse № 1

En regardant le code source (à partir du dernier git version, HEAD = 36b8f83 le 7 novembre 2014), dans Src / exec.c, je le vois à la ligne 2854:

    char trycd = (isset(AUTOCD) && isset(SHINSTDIN) &&
(!redir || empty(redir)) && args && !empty(args) &&
!nextnode(firstnode(args)) && *(char *)peekfirst(args));

De cela, il semble (bien que non documenté que je peux trouver) que le SHINSTDIN l'option doit également être définie pour AUTOCD travailler. Cependant, vous ne pouvez pas simplement activer cette option dans un script (en ajoutant -s au shebang, par exemple), car alors le shell exécutant votre script ne lira pas les commandes du script.

Je ne sais pas si prévenir AUTOCD de travailler sans SHINSTDIN est un bug, ou s'il y a une raison non documentée pour laquelle il doit être vrai; Ce serait une bonne question pour la liste de diffusion zsh-workers.