/ / Opcje nie działają w skrypcie zsh - zsh, options

Opcje nie działają w skrypcie zsh - zsh, options

To nie wydaje się być częstym problemem, ale nie mogę uzyskać opcji ZSH do działania w skrypcie ZSH, np. autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

Właśnie dostaję "polecenie my_directory nie istnieje",co się dzieje, gdy ta opcja nie jest ustawiona. Fakt, że nie dostaję wielu wyników wyszukiwania dla ustawień opcji w skryptach (i to pytanie wydaje się być unikalne) sugeruje, że brakuje mi pewnych istotnych informacji, które mam jeszcze nie zauważone.

Dzięki!

Odpowiedzi:

0 dla odpowiedzi № 1

Patrząc na kod źródłowy (od najnowszego git wersja, HEAD = 36b8f83 z 7 listopada 2014 r.), w Src / exec.c, widzę to na linii 2854:

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

Z tego wynika (choć nie udokumentowane, że mogę znaleźć), że SHINSTDIN należy również ustawić opcję AUTOCD pracować. Jednak nie można po prostu włączyć tej opcji w skrypcie (przez dodanie -s do Shebang, na przykład), ponieważ wtedy powłoka uruchomiona w twoim skrypcie nie odczyta poleceń ze skryptu.

Nie wiem, czy zapobiegać AUTOCD z pracy bez SHINSTDIN jest błędem, lub jeśli istnieje nieudokumentowany powód, dla którego musi to być prawda; byłoby to dobre pytanie dla listy mailingowej zsh-workers.