/ / विकल्प zsh स्क्रिप्ट के अंदर काम नहीं करते हैं - zsh, विकल्प

विकल्प zsh स्क्रिप्ट के अंदर काम नहीं करते हैं - zsh, विकल्प

यह एक आम समस्या प्रतीत नहीं होता है, लेकिन मुझे ZSH स्क्रिप्ट के भीतर काम करने के लिए ZSH विकल्प नहीं मिल सकते हैं, उदा। autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

मुझे बस "आदेश my_directory मौजूद नहीं है",यह तब होता है जब वह विकल्प "सेट नहीं होता है। तथ्य यह है कि मुझे स्क्रिप्ट के अंदर विकल्पों को सेट करने के लिए कई खोज परिणाम नहीं मिलते हैं (और यह प्रश्न अद्वितीय प्रतीत होता है) बताता है कि मुझे कुछ महत्वपूर्ण जानकारी मिली है जो मेरे पास है अभी तक नहीं देखा

धन्यवाद!

उत्तर:

जवाब के लिए 0 № 1

स्रोत कोड को देख रहे हैं (नवीनतम से git संस्करण, HEAD = 36b8f83 7 नवंबर 2014 को), एसआरसी / 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 मेलिंग सूची के लिए यह एक अच्छा सवाल होगा।