c - 如何在 ksh 脚本内导出子进程的环境变量?

标签 c bash variables ksh environment

我正在开发一个旧的 C 软件。有一个 ksh 脚本执行一个 C 程序,然后创建一些其他进程并结束。这些进程仍然存在。

我正在尝试在我的 ksh 脚本中设置一个环境变量,以便可以在新创建的仍处于事件状态的进程中访问它。

我已经尝试过这种方法:

#!/bin/ksh

VARIABLE=value
export VARIABLE

my_c_program

但这不起作用......我已经尝试过:

  1. 将我的 ksh 脚本更改为 bash
  2. 创建一个包装脚本,用于创建并导出变量,然后执行原始 ksh 脚本(仅执行 C 程序)
  3. 获取我的 ksh 脚本(或尝试使用 2 时的包装脚本)而不是执行 它

但是没有任何效果。

现在唯一有效的是当我手动显式执行命令时:

export VARIABLE

在当前的 bash 终端中。

为什么?是否可以在脚本内进行导出而不是手动进行导出?

最佳答案

其实一切都很好......

事实是,我认为是在我的 ksh 脚本中执行的 C 程序的子进程是之前执行的另一个进程的子进程。 C 程序只是通过共享内存发送一条消息,告诉另一个程序执行它的子程序。

所以环境变量确实从未从我的 C 程序转移到另一个程序的子程序中。我在子进程中设置该变量的唯一一次是在导出变量的 shell 中执行另一个程序(子进程的真正父进程)时。

关于c - 如何在 ksh 脚本内导出子进程的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18352524/

相关文章:

c++ - 数据文件的 ld 使数据大小成为 *ABS* 而不是整数

c# - 初始化本地与动态 DateTime 变量

c - STM32F1 CANbus - 接收不工作

c - execl 和 execv 有什么区别?

linux - 使用 awk 或 sed 打印第一列和电子邮件

bash - 从标准输入 Bash 逐行读取

JavaScript 变量分成组

objective-c - Objective C - 调节GDC线程以限制CPU使用

c - 为什么 malloc 分配的字节数与请求的字节数不同?

regex - 验证字符串是否仅包含 ASCII 字符和数字