我正在开发一个旧的 C
软件。有一个 ksh
脚本执行一个 C
程序,然后创建一些其他进程并结束。这些进程仍然存在。
我正在尝试在我的 ksh
脚本中设置一个环境变量,以便可以在新创建的仍处于事件状态的进程中访问它。
我已经尝试过这种方法:
#!/bin/ksh
VARIABLE=value
export VARIABLE
my_c_program
但这不起作用......我已经尝试过:
- 将我的 ksh 脚本更改为 bash
- 创建一个包装脚本,用于创建并导出变量,然后执行原始 ksh 脚本(仅执行 C 程序)
- 获取我的 ksh 脚本(或尝试使用 2 时的包装脚本)而不是执行 它
但是没有任何效果。
现在唯一有效的是当我手动显式执行命令时:
export VARIABLE
在当前的 bash 终端中。
为什么?是否可以在脚本内进行导出而不是手动进行导出?最佳答案
其实一切都很好......
事实是,我认为是在我的 ksh 脚本中执行的 C 程序的子进程是之前执行的另一个进程的子进程。 C 程序只是通过共享内存发送一条消息,告诉另一个程序执行它的子程序。
所以环境变量确实从未从我的 C 程序转移到另一个程序的子程序中。我在子进程中设置该变量的唯一一次是在导出变量的 shell 中执行另一个程序(子进程的真正父进程)时。
关于c - 如何在 ksh 脚本内导出子进程的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18352524/