/ / Le opzioni non funzionano all'interno dello script zsh - zsh, opzioni

Le opzioni non funzionano all'interno di zsh script - zsh, options

Questo non sembra essere un problema comune, ma non riesco a far funzionare le opzioni ZSH all'interno di uno script ZSH, ad es. autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

Ho appena ricevuto "comando mia_directory non esiste",che è quello che succede quando quell'opzione non è impostata.Il fatto che non ottenga molti risultati di ricerca per impostare le opzioni all'interno degli script (e questa domanda sembra essere unica) suggerisce che mi manca qualche informazione cruciale che ho non ancora visto.

Grazie!

risposte:

0 per risposta № 1

Guardando il codice sorgente (dal più recente git versione, HEAD = 36b8f83 il 7 nov 2014), in Src / exec.c, vedo questo sulla linea 2854:

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

Da questo, sembra (anche se non documentato che posso trovare) che il SHINSTDIN l'opzione deve essere impostata anche per AUTOCD lavorare. Tuttavia, non puoi semplicemente abilitare questa opzione in uno script (aggiungendo -s per lo shebang, ad esempio), perché quindi la shell che esegue il tuo script non leggerà i comandi dallo script.

Non so se prevenire AUTOCD dal lavorare senza SHINSTDIN è un bug, o se c'è un motivo non documentato perché deve essere vero; questa sarebbe una buona domanda per la mailing list di zsh-worker.