如何重命名bash功能?
发布时间:2020-12-15 19:54:52 所属栏目:安全 来源:网络整理
导读:我正在开发定义bash功能的另一个软件包的一些方便的包装器。我想用我自己的相同命名的函数替换他们的bash函数,同时仍然能够从我的内部运行它们的函数。换句话说,我需要重命名它们的功能,或创建一些永久性的别名,当我创建我的相同名称的功能时不会被修改
我正在开发定义bash功能的另一个软件包的一些方便的包装器。我想用我自己的相同命名的函数替换他们的bash函数,同时仍然能够从我的内部运行它们的函数。换句话说,我需要重命名它们的功能,或创建一些永久性的别名,当我创建我的相同名称的功能时不会被修改。
给出一个简单的例子,说明我没有期望工作的天真尝试(实际上并没有): $ theirfunc() { echo "do their thing"; } $ _orig_theirfunc() { theirfunc; } $ theirfunc() { echo "do my thing"; _orig_theirfunc } $ theirfunc do my thing do my thing do my thing ... 显然我不想无限次递归,我想要: do my thing do their thing 我如何做到这一点?
这是一种消除临时文件的方法:
$ theirfunc() { echo "do their thing"; } $ eval "$(echo "orig_theirfunc()"; declare -f theirfunc | tail -n +2)" $ theirfunc() { echo "do my thing"; orig_theirfunc; } $ theirfunc do my thing do their thing (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |