如何在其他shell的上下文中访问一个上下文的shell变量

时间:2015-04-24 12:57:15

标签: c linux bash shell

我在shell上执行了以下命令

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

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

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

输出:

___history1 = ____

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

请澄清以下疑问

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

  2. 是不是因为当我调用系统系统调用时,它会分配一个新shell?

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

2 个答案:

答案 0 :(得分:0)

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

您可以将其与正在运行的bash -c history进行比较,但是没有结果。

答案 1 :(得分:0)

你打开shell:1现在执行一些命令。 现在关闭那个shell。

之后打开新的shell2并使用system()命令,它将获得在shell1中执行的命令信息

直到关闭当前shell,其历史记录不会在全局历史记录文件中刷新。

是系统会打开自己的背景。

  

OP:我在主shell上执行了这个命令,该命令从启动时运行   系统,有什么方法可以手动冲洗它?

为此,您需要在.bashrc文件中添加此行

export PROMPT_COMMAND='history -a'

请参阅:http://www.aloop.org/2012/01/19/flush-commands-to-bash-history-immediately/