/ / Опциите не работят вътре в zsh скрипт - zsh, опции

Опциите не работят вътре в zsh script - zsh, опции

Това не изглежда да е често срещан проблем, но не мога да получа опциите на ZSH да работят в скрипт ZSH, напр. autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

Просто получавам "командата my_directory не съществува",което се случва, когато тази опция не е настроена Фактът, че не получавам много резултати от търсенето за задаване на опции в скриптовете (и този въпрос изглежда е уникален) предполага, че ми липсва важна част от информацията, която имам още не се вижда.

Благодаря!

Отговори:

0 за отговор № 1

Преглеждайки изходния код (от последния git версия, HEAD = 36b8f83 на 7 ноември 2014 г.), в Src / exec.c, виждам това на линия 2854:

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

От това изглежда (макар и не документирано, че мога да намеря), че SHINSTDIN трябва също така да бъде зададена опция AUTOCD да работиш. Не можете обаче просто да активирате тази опция в скрипт (като добавите -s към шебанг, например), защото тогава черупката, която работи с вашия скрипт, няма да чете команди от скрипта.

Не знам дали да предотвратя AUTOCD от работа без SHINSTDIN е бъг или ако има някаква неоснователна причина, поради която трябва да е вярна; това би било добър въпрос за пощенския списък на zsh-workers.