c - 如何在另一个 shell 的上下文中访问一个上下文的 shell 变量

标签 c linux bash shell

我在 shell 上执行了以下命令

sw0:root> pwd
/root
sw0:root> echo $(history 1)
2 echo $(history 1)
sw0:root>

现在我在一个c文件中调用system系统调用,如下所示

system (" echo \"___history1 = $(history 1)____\"");

输出:

___history1 = ____

我尝试的是使用 system 系统调用从 C 中读取 shell 的最后一个历史命令。

请澄清以下疑问

  1. 为什么我无法从 c 文件中读取在 shell 中执行的最后一个历史命令?

  2. 是不是因为我调用system系统调用的时候,fork了一个新的shell?

  3. 如果是这样,我该如何实现?从其他 shell 读取 1 个 shell 的命令输出?

最佳答案

当您运行您的程序时,它会在子 shell 中运行,并且不会继承调用 shell 的历史记录。

您可以将此与运行 bash -c history 进行比较,您不会得到任何结果。

关于c - 如何在另一个 shell 的上下文中访问一个上下文的 shell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848146/

相关文章:

客户端读取另一个文件后没有读取任何数据

linux - 在 Linux 中使用 Aptana studio 3 在本地服务器中创建项目

c++ - 如何在 Eclipse 中将我的项目从多个编译单元转变为单个编译单元

c - 试图找到在两个数组中重复的数字

mysql - 脚本执行mysql查询,返回列名+结果

linux - 根据列查找重复行并使用 awk 打印两行及其编号

linux - 使用 AWK 将列添加到 TSV(选项卡式分隔文件)

linux - 如何在linux中递归计算某些文件的总大小

linux - 命令通过 'bash -c' 失败,但可以直接运行

C 取消引用 void* 指针