सबसे जटिल और सबसे वास्तविक समय समाधान उपयोगकर्ता जाल समारोह में लिखना है .zshrc
जो जब फंसे सिग्नल पकड़ा जाता है, तो स्रोत .zshrc
अपने आप।
ऐशे ही:
~$ cat .zshrc
trap includerc USR1
includerc() {
source $HOME/.zshrc
}
alias xxx='df'
Zsh के भीतर, यह अब देखा जा सकता है:
zshsession> alias
which-command=whence
xxx=df
अब .zshrc में कुछ बदलाव हुए हैं
~$ cat .zshrc
trap includerc USR1
includerc() {
source $HOME/.zshrc
}
alias xxx='df -g'
alias yyy='someothercommand'
यहाँ मुश्किल हिस्सा आता है। का उपयोग करते हुए inotify
देख रहे .zshrc
या एक चौकीदार स्क्रिप्ट द्वारा जो के अंतिम संशोधन की जांच करता है .zshrc
एक कमांड चालू होता है जो USR1 सिग्नल को सभी को भेजता है zsh
उपयोगकर्ता की प्रक्रियाएं। अब मैंने इसे दूसरे शेल में चलाया:
~$ ps -a | awk '$4=="zsh" {print $1}' | xargs kill -SIGUSR1
और परिणाम है:
zshsession> alias
which-command=whence
xxx='df -g'
yyy=someothercommand
killall -s USR1 zsh
इस ps-awk-xargs निर्माण की तुलना में।