रैपिंग cd
, एक मौजूदा कमांड, अनुशंसित नहीं है।
एक अधिक सार्वभौमिक समाधान chpwd
बैश में एक कस्टम हुक को परिभाषित करेगा । (इस सवाल के टैग के अनुसार, मुझे लगता है कि आप बैश का उपयोग कर रहे हैं)
अन्य आधुनिक गोले की तुलना में बाश में डिजाइन किया गया एक पूर्ण हुक सिस्टम नहीं है। PROMPT_COMMAND
चर का उपयोग एक हुक फ़ंक्शन के रूप में किया जाता है, जो मछली precmd
में ज़ेडएसएच में हुक के बराबर होता है fish_prompt
। कुछ समय के लिए, ZSH एकमात्र शेल है जिसे मैंने जाना है जिसमें एक chpwd
हुक बिलिन है।
PROMPT_COMMAND
यदि सेट किया जाता है, तो मूल्य को प्रत्येक प्राथमिक संकेत ($ PS1) की छपाई से पहले निष्पादित करने के लिए एक कमांड के रूप में व्याख्या की जाती है।
https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-Variables
chpwd
बाश में हुक
chpwd
बैश के आधार पर समतुल्य हुक को स्थापित करने के लिए एक ट्रिक प्रदान की जाती है PROMPT_COMMAND
।
# create a PROPMT_COMMAND equivalent to store chpwd functions
typeset -g CHPWD_COMMAND=""
_chpwd_hook() {
shopt -s nullglob
local f
# run commands in CHPWD_COMMAND variable on dir change
if [[ "$PREVPWD" != "$PWD" ]]; then
local IFS=$';'
for f in $CHPWD_COMMAND; do
"$f"
done
unset IFS
fi
# refresh last working dir record
export PREVPWD="$PWD"
}
# add `;` after _chpwd_hook if PROMPT_COMMAND is not empty
PROMPT_COMMAND="_chpwd_hook${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
हम पता लगाने कर रहे हैं के बाद से PWD
सीधे परिवर्तन, समाधान के साथ काम करता है cd
, pushd
और popd
।
नोट : chpwd
बैश और chpwd
ज़ेडएस में हमारे कार्यान्वयन के बीच मुख्य अंतर PROMPT_COMMAND
गैर-इंटरैक्टिव बैश शेल में समर्थित नहीं है।
प्रयोग
_public_html_action() {
if [[ $PWD == */public_html ]]; then
# actions
fi
}
# append the command into CHPWD_COMMAND
CHPWD_COMMAND="${CHPWD_COMMAND:+$CHPWD_COMMAND;}_public_html_action"
स्रोत: मेरी मुट्ठी से बैश में chpwd समतुल्य हुक बनाएँ ।
किसी के लिए भी ZSH का जवाब चाहिए। chpwd
ZSH में हुक का उपयोग करें । सीधे कार्य को परिभाषित न करें chpwd()
। यहाँ और अधिक विस्तार ।
echo "Testing..."
if, लेकिन nothings आउटपुट के ठीक ऊपर जोड़ा है । क्या मुझे इन परिवर्तनों को लागू करने के लिए कुछ करने की आवश्यकता है?