Wrapping cd, perintah yang ada, tidak direkomendasikan.
Solusi yang lebih universal adalah mendefinisikan chpwdpengait kustom di Bash. (Menurut tag pertanyaan ini, saya menganggap Anda menggunakan Bash)
Tidak ada sistem kait lengkap yang dirancang di Bash jika dibandingkan dengan kerang modern lainnya. PROMPT_COMMANDvariabel digunakan sebagai fungsi kait, yang setara dengan precmdkait di ZSH, fish_promptdi Fish. Untuk saat ini, ZSH adalah satu-satunya cangkang yang saya kenal yang memiliki chpwdkait bawaan.
PROMPT_COMMAND
Jika diset, nilai ditafsirkan sebagai perintah untuk dijalankan sebelum pencetakan setiap prompt utama ($ PS1).
https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-Variables
chpwd Hubungkan Bash
Trik disediakan untuk menyiapkan chpwdkait setara di Bash berdasarkan 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}"
Karena kita mendeteksi PWDperubahan secara langsung, solusi bekerja dengan cd, pushd, dan popd.
Catatan : Perbedaan utama antara chpwdimplementasi kami di Bash dan chpwddi ZSH adalah, PROMPT_COMMANDtidak didukung dalam shell Bash non-interaktif.
Pemakaian
_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"
Sumber: Buat Hook Setara chpwd di Bash dari intisari saya.
Bagi siapa pun yang menginginkan jawaban untuk ZSH. Gunakan chpwdkait di ZSH. Jangan mendefinisikan chpwd()fungsi secara langsung. Lebih detail di sini .
echo "Testing..."output tepat di atas if, tetapi tidak ada. Apakah saya perlu melakukan sesuatu untuk menerapkan perubahan ini?