Saya mencoba mengatur sesuatu di server yang saya jalankan, kapan pun saya cd
masuk ke public_html
folder 95% dari waktu ada beberapa perintah saya akan selalu berjalan untuk memeriksa hal-hal tertentu.
Apakah masih ada yang bisa saya kaitkan cd
jadi jika direktori tersebut adalah public_html
, ia akan secara otomatis menjalankan perintah untuk saya?
Jika saya tidak bisa mengaitkan ke cd
perintah, apakah ada hal lain yang bisa saya lakukan untuk mencapai hasil yang saya kejar?
Saya menjalankan CentOS 5.8.
bash
shell
cd-command
TMH
sumber
sumber
echo "Testing..."
output tepat di atas if, tetapi tidak ada. Apakah saya perlu melakukan sesuatu untuk menerapkan perubahan ini?. ~/.bash_profile
/bin/cd
dalam CentOS saya, jadi solusi ini mungkin tidak akan berfungsicd -P public_html
ataucd ~/public_html
atau memiliki perilaku tak terduga jika Anda tidak bisacd
menjadipublic_html
.Dengan
ksh
ataubash
(atauzsh
):Dengan
zsh
:(
chpwd
Adalah kait fungsi yang disebut setiap kali direktori kerja saat ini berubah (dengan caracd
,pushd
,popd
...)).sumber
Wrapping
cd
, perintah yang ada, tidak direkomendasikan.Solusi yang lebih universal adalah mendefinisikan
chpwd
pengait 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_COMMAND
variabel digunakan sebagai fungsi kait, yang setara denganprecmd
kait di ZSH,fish_prompt
di Fish. Untuk saat ini, ZSH adalah satu-satunya cangkang yang saya kenal yang memilikichpwd
kait bawaan.chpwd
Hubungkan BashTrik disediakan untuk menyiapkan
chpwd
kait setara di Bash berdasarkanPROMPT_COMMAND
.Karena kita mendeteksi
PWD
perubahan secara langsung, solusi bekerja dengancd
,pushd
, danpopd
.Catatan : Perbedaan utama antara
chpwd
implementasi kami di Bash danchpwd
di ZSH adalah,PROMPT_COMMAND
tidak didukung dalam shell Bash non-interaktif.Pemakaian
Sumber: Buat Hook Setara chpwd di Bash dari intisari saya.
Bagi siapa pun yang menginginkan jawaban untuk ZSH. Gunakan
chpwd
kait di ZSH. Jangan mendefinisikanchpwd()
fungsi secara langsung. Lebih detail di sini .sumber
Saya bukan pakar bash, tetapi saya akan mengambil jawaban @ UVV dan memodifikasinya sedikit sehingga ia melakukan ini:
public_html
, saya hanya memeriksa beberapahook-script
file di direktori target$1
, katakanlahcd_hook.sh
,.hook-script
ada, jalankan, dan lanjutkan dengancd
Ini tampaknya lebih umum karena Anda kemudian dapat menerapkan
cd
-hook ke direktori mana pun jika Anda memilih, dengan hanya menambahkancd_hook.sh
di direktori tersebut.sumber
cd
suatu tempat, periksa.bashcd
file dan jalankan jika ada.Menggunakan pendekatan zsh yang kuat di bash:
Pertama cara mudah untuk memperpanjang bash:
~ / .runscript
Sertakan ke dalam .bashrc:
Anda dapat membuat ~ / .bashrc.d / cdhook dengan:
Sekarang terserah Anda untuk mengganti fungsi:
sumber