linux – 在环境中设置Bash功能

linux – 在环境中设置Bash功能,第1张

概述我需要从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= 我需要从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);

然后你不需要使用内部bash接口来玩游戏来定义函数. (如果正在运行的bash脚本也需要导出函数,无论出于何种原因,只需将-f< func>行添加到-c后面的参数中.)

这样做的好处是可以使用修补和未修补的bashes.

(我必须为各种程序制作类似的补丁,所以我分担你的痛苦.)

总结

以上是内存溢出为你收集整理的linux – 在环境中设置Bash功能全部内容,希望文章能够帮你解决linux – 在环境中设置Bash功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1027690.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存