加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何重命名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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读