A solução mais complexa e mais em tempo real é escrever uma função de interceptação do usuário em .zshrc
, que quando o sinal interceptado é capturado, origina .zshrc
em si.
Assim:
~$ cat .zshrc
trap includerc USR1
includerc() {
source $HOME/.zshrc
}
alias xxx='df'
No zsh, isso pode ser visto agora:
zshsession> alias
which-command=whence
xxx=df
Agora, algumas alterações no .zshrc
~$ cat .zshrc
trap includerc USR1
includerc() {
source $HOME/.zshrc
}
alias xxx='df -g'
alias yyy='someothercommand'
Aqui vem a parte complicada. Usando inotify
assistindo .zshrc
ou por um script watcher que examina a última modificação do comando .zshrc
, é acionado que envia o sinal USR1 para todos os processos zsh
do usuário. Agora eu apenas corri em outro shell:
~$ ps -a | awk '$4=="zsh" {print $1}' | xargs kill -SIGUSR1
E o resultado é:
zshsession> alias
which-command=whence
xxx='df -g'
yyy=someothercommand