linux – 在环境中设置Bash功能
发布时间:2020-12-14 01:23:52 所属栏目:Linux 来源:网络整理
导读:我需要从C/C++程序中在 Bash环境中定义一个 Bash函数.在shellshock bug之前,我可以用这种方式定义一个函数: my_func='() { echo "This is my function";}' 或等同于C程序: setenv("my_func","() { echo "This is my function";}",1); 要么 putenv("my_fu
我需要从C/C++程序中在
Bash环境中定义一个
Bash函数.在shellshock bug之前,我可以用这种方式定义一个函数:
my_func='() { echo "This is my function";}' 或等同于C程序: setenv("my_func","() { echo "This is my function";}",1); 要么 putenv("my_func=() { echo "This is my function";}"); 但是使用修复了shellshock的Bash版本,我无法管理如何在环境中定义我的函数. 奇怪的是,如果我运行env,我可以看到我在环境中定义的函数,但是如果我调用它,Bash说它不存在. 提前致谢 解决方法
如果你用execv调用bash(这样你只调用一次),你可以替换(使用execl作为解释):
execl("/bin/bash","bash","file_to_run","arg1","arg2",0); 同 execl("/bin/bash","-c","f() {...} g() {...}n. $0",0); 然后你不需要使用内部bash接口来玩游戏来定义函数. (如果正在运行的bash脚本也需要导出函数,无论出于何种原因,只需将-f< func>行添加到-c后面的参数中.) 这样做的好处是可以使用修补和未修补的bashes. (我必须为各种程序制作类似的补丁,所以我分担你的痛苦.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |