[英]How to export an environment variable for children processes inside a ksh script?
我正在使用旧的C
软件。 有一个ksh
脚本执行一个C
程序,然后创建其他一些进程并结束。 这些过程仍然有效。
我正在尝试在我的ksh
脚本中设置一个环境变量,以便可以在仍然活跃的新创建进程中对其进行访问。
我已经尝试过这种方式:
#!/bin/ksh
VARIABLE=value
export VARIABLE
my_c_program
但这不起作用...我试图:
但是,这没有用。
目前唯一有效的方法是手动执行命令:
export VARIABLE
在当前的bash终端中。
为什么? 是否可以在脚本内进行导出而不是手动进行导出?
一切都很好...
事实是,我认为是在ksh脚本中执行的C程序的子进程是以前执行的另一个进程的子进程。 C程序只是通过共享内存发送一条消息,以告诉另一个程序执行其子进程。
因此,确实环境变量从未从我的C程序传播到另一个孩子。 唯一在子级中设置该变量的时间是在导出变量的外壳中执行另一个程序(该子级的真正父级)时。
上面的代码看起来正确,应该可以运行。 另一种方法是:
VARIABLE=value my_c_program
导出仅用于程序的变量。 之后,将设置该变量,但其他外部进程将无法获得副本。
那么为什么您的脚本不起作用? 很难说,但是这里有一些调试问题的技巧:
使用#!/bin/ksh -x
启用调试输出。 将输出保存在文件中,然后grep VARIABLE
以查看其发生的情况。
检查拼写错误。
另一个shell脚本就像一个外部进程。 所以创建一个脚本
#!/bin/ksh echo $VARIABLE
并调用它而不是my_c_program
只是为了确保在工作中传递变量。
也许C做了一些意外的事情。 使用调试器来确保它能够达到您的期望。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.