यहाँ zsh के लिए / etc / bashrc का मेरा अनुकूलन है। मैंने सभी URL वर्णों के प्रतिशत-एन्कोडिंग को शामिल किया है जिनकी आवश्यकता है, जो कि यदि आप चाहते हैं कि यह सभी मान्य फ़ाइल और निर्देशिका नामों के साथ काम करे।
यह एक precmd
हुक को पंजीकृत करता है , जो एक से अधिक फ़ंक्शन को अन्य स्क्रिप्ट और कॉन्फ़िगरेशन फ़ाइलों में पंजीकृत करने की अनुमति देता है।
अद्यतन मार्च 2019: LC_ALL
खाली करने के लिए सेट करें ताकि यह ओवरराइड न हो LC_CTYPE
। का प्रयोग करें precmd
उपयोग करने के बजाय प्रत्येक प्रॉम्प्ट पर काम कर निर्देशिका अद्यतन करने के लिए chpwd
यह हर बार यह है बदल-आदेश पाइपलाइनों यह अस्थायी रूप से बदल सकते हैं और टर्मिनल उन प्रदर्शित नहीं करना चाहिए अद्यतन करने के लिए। साथ ही, पिछली स्थिति के दौरान इसे बदले जाने की स्थिति में टर्मिनल स्थिति को अद्यतन करने के लिए यह उपयोगी हो सकता है। printf -v
सबटाइटल सिंटैक्स का उपयोग करने के बजाय चर को स्पष्ट रूप से लिखने के लिए उपयोग करें ।
# Tell the terminal about the working directory whenever it changes.
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
update_terminal_cwd() {
# Identify the directory using a "file:" scheme URL, including
# the host name to disambiguate local vs. remote paths.
# Percent-encode the pathname.
local url_path=''
{
# Use LC_CTYPE=C to process text byte-by-byte. Ensure that
# LC_ALL isn't set, so it doesn't interfere.
local i ch hexch LC_CTYPE=C LC_ALL=
for ((i = 1; i <= ${#PWD}; ++i)); do
ch="$PWD[i]"
if [[ "$ch" =~ [/._~A-Za-z0-9-] ]]; then
url_path+="$ch"
else
printf -v hexch "%02X" "'$ch"
url_path+="%$hexch"
fi
done
}
printf '\e]7;%s\a' "file://$HOST$url_path"
}
# Register the function so it is called at each prompt.
autoload add-zsh-hook
add-zsh-hook precmd update_terminal_cwd
fi