У меня есть три сценария zsh,
meta_zsh.sh
,
# meta_zsh.sh
meta_s() {
eval 'echo "${(%):-%x} re-define s()"; s() { echo " calling s() ${(%):-%x}"; }'
}
script_zsh.sh
и script_zsh_2.sh
(одинаковое содержимое)
# script_zsh.sh and script_zsh_2.sh (the same content)
meta_s
s
вzsh выполняет следующие команды
$ . ./meta_zsh.sh; . ./script_zsh.sh; . ./script_zsh_2.sh
вывод
./meta_zsh.sh re-define s()
calling s() ./script_zsh.sh
./meta_zsh.sh re-define s()
calling s() ./script_zsh_2.sh
Вопрос в том, как добиться того же эффекта в bash?
Я пытался изменитьдо ${(%):-%x}
до ${BASH_SOURCE[0]}
или $0
, но ни один из них не работает.
Зачем беспокоиться?
После того как вышеописанный meta_xx.sh получен в ~ / .zshrc (~ / .bashrc),
Я могу набрать s
в оболочке для перезагрузки недавно исходного скрипта, если в нем meta_s
.