टर्मिनल प्राथमिकताओं का सम्मान क्यों नहीं करता है?

Dec 10 2020

पिछले हफ्ते में कुछ समय के लिए मेरे टर्मिनल ने "नए टैब के साथ खुला: समान कार्य निर्देशिका" सेटिंग का सम्मान करना बंद कर दिया। "नई खिड़कियां ..." के साथ परीक्षण ने एक ही परिणाम दिया।

मेरा खोल zsh है।

मैं डैन रोसेनस्टार्क के एक उत्तर का अनुसरण करके इसे प्राप्त करने में सक्षम था https://apple.stackexchange.com/a/340778/398648

# http://superuser.com/a/315029/4952
# Set Apple Terminal.app to resume directory... still necessary 2018-10-26
if [[ $TERM_PROGRAM == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]] {
  function chpwd {
    local SEARCH=' '
    local REPLACE='%20'
    local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
    printf '\e]7;%s\a' "$PWD_URL"
  }
  chpwd
}

लेकिन: मुझे नहीं पता कि मैं अपने लिए यह कैसे निर्धारित कर सकता था, या मैं एक समान समस्या को कैसे डिबग कर सकता था

किसी भी सुझाव या चाल को यह पता लगाने के लिए कि टर्मिनल के उन शुरुआती चरणों की क्या सराहना की जाएगी।

काम न करने वाली चीजें:

  • न्यू टैब या नई विंडो के लिए टॉगल सेटिंग
  • नाम बदल रहा है या जोड़ने returnकी पहली पंक्ति में .zshrc, .zsh*फ़ाइलों
  • वर्तमान कार्यशील निर्देशिका में नए टर्मिनल टैब में सभी सुझाव काम नहीं करते हैं

अन्य संभावित उपयोगी जानकारी:

  • "समान प्रोफ़ाइल" / "डिफ़ॉल्ट प्रोफ़ाइल" सेटिंग्स को बदलने पर सम्मानित किया जाता है
  • शो pwdकी पहली पंक्ति के रूप में जोड़ना .zshrcनिर्देशिका पहले से ही है/home/<myuser>
  • मैंने nixहाल ही में (सहित nix-darwin) कुछ उपकरणों और परियोजनाओं को स्थापित और अनइंस्टॉल किया है

मेटाडेटा:

OS        macOS Catalina 10.15.7 (19H2)
Terminal  2.10 (433)
zsh       5.7.1 (x86_64-apple-darwin19.0)

जवाब

3 MarlonRichert Dec 28 2020 at 03:43

यदि आप उस स्क्रीनशॉट में "एस्केप सीक्वेंस ..." पर क्लिक करते हैं, तो आपको निम्नलिखित देखने को मिलेंगे:

हालांकि, यह आपको नहीं बताता है कि फ़ाइल में सामान्य रूप से इस बात का ध्यान रखा /etc/zshrc_Apple_Terminalजाता है, जिसे कहा जाता है /etc/zshrc। ऐसी कई चीजें हैं जिन्हें /etc/zshrc_Apple_Terminalकहा जाने से रोका जा सकता है या जो इसे करने की कोशिश को ओवरराइड कर सकती हैं:

  • आप के साथ Zsh शुरू कर रहे हैं zsh -dया zsh -f
  • आपके पास एक फ़ाइल है ${ZDOTDIR:-$HOME}/.zshenvया ${ZDOTDIR:-$HOME}/.zprofileजिसमें आपके पास है setopt NO_rcsयाsetopt NO_globalrcs
  • पैरामीटर $TERM_PROGRAMका मान नहीं है Apple_Terminal
  • Zsh के पास पढ़ने की सुविधा नहीं है /etc/zshrc_Apple_Terminal
  • जब /etc/zshrc_Apple_Terminalखट्टा हो जाता है, तो पैरामीटर $INSIDE_EMACSगैर-शून्य होता है।
  • आप खट्टा होने के कुछ precmdसमय बाद एक फ़ंक्शन को परिभाषित करते हैं /etc/zshrc_Apple_Terminal, जो तब द्वारा परिभाषित एक को ओवरराइड करता है add-zsh-hook

आप डिबग करने के लिए क्या कर सकते हैं:

  • गैर-वैश्विक कॉन्फ़िग फ़ाइलों के बिना एक सबस्क्रिप्शन शुरू करें और देखें कि क्या बग वहाँ होता है:
    cd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
    
    यदि समस्या इस उपधारा में नहीं होती है, तो इसका मतलब है कि समस्या आपके गैर-वैश्विक डॉटफ़ाइल्स में कहीं है। आप इन फ़ाइलों की सूची प्राप्त कर सकते हैं
    ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
    
  • Zsh के साथ पुनः आरंभ करें exec zsh -vxऔर प्रारंभ से आउटपुट का अध्ययन करके देखें /etc/zshrc_Apple_Terminalकि क्या खट्टा हो जाता है और क्या कुछ बाद में precmdहुक को सेट करता है।