/ / Las opciones no funcionan dentro de la secuencia de comandos zsh - zsh, options

Las opciones no funcionan dentro de la secuencia de comandos zsh - zsh, options

Esto no parece ser un problema común, pero no puedo hacer que las opciones ZSH funcionen dentro de un script ZSH, p. autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

Acabo de recibir el "comando mi_directorio no existe",que es lo que sucede cuando esa opción no está configurada. El hecho de que no obtengo muchos resultados de búsqueda para establecer opciones dentro de los guiones (y esta pregunta parece ser única) sugiere que me falta algo crucial que tengo no visto aún

¡Gracias!

Respuestas

0 para la respuesta № 1

Mirando el código fuente (de la última git versión, HEAD = 36b8f83 el 7 de noviembre de 2014), en Src / exec.c, veo esto en la línea 2854:

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

A partir de esto, parece (aunque no documentado que puedo encontrar) que el SHINSTDIN la opción también debe configurarse para AUTOCD trabajar. Sin embargo, simplemente no puede habilitar esta opción en un script (agregando -s al shebang, por ejemplo), porque entonces el shell que ejecuta su script no leerá los comandos del script.

No sé si prevenir AUTOCD de trabajar sin SHINSTDIN es un error, o si hay una razón no documentada por la cual debe ser cierto; esta sería una buena pregunta para la lista de correo de zsh-workers.