well documented可能unset
一个Bash函数。考虑这个功能:
ls() {
echo 'Executing';
# Call to original ls
}
可以使用unset -f ls
取消设置。
我想构建一个包装函数,它将暂时取消设置一个函数,调用原始函数,然后重置该函数。我想这样做来执行编程周围的代码,而不必任意重命名我的函数。
我想到了这个问题的几种可能的解决方案,其中没有一个我特别满意。
ls() {
echo 'Executing';
/bin/ls $@;
}
虽然这会达到预期的效果,但它并不理想,因为它取决于知道原始ls
(在这种情况下)位于何处。这会在ls
/bin
的任何平台上中断
source
函数定义
ls() {
echo 'Executing';
unset -f ls;
/bin/ls $@;
source ~/.bash_functions;
}
我无法让这个工作,但似乎我应该能够捕获函数,保存它,然后取消设置并重置函数,如下所示:
ls() {
echo 'Executing';
SAVED=`which ls`;
unset -f ls;
/bin/ls $@;
ls=$SAVED;
}
那么,我如何取消设置调用原始函数然后在Bash中重置它?非常感谢你的帮助!
答案 0 :(得分:2)
取消设置功能,调用原始功能,然后重新设置功能。</ p>
请勿打扰取消设置/重新设置此功能,而是使用内置command
:
>alias pwd='echo nope'
>pwd
nope
>command pwd
/home/Aaron