2015-04-24 44 views
3

我已经执行以下的shell命令如何访问其他shell的情况下一个上下文的shell变量

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

现在我打电话交流文件系统的系统调用,如下图所示

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

输出:

___history1 = ____ 

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

请澄清以下疑点

  1. 为什么我无法读取C文件在shell中执行一条历史命令?

  2. 是因为当我打电话给系统系统调用时,它分出一个新的shell?

  3. 如果是这样,我该如何做到这一点?从其他地方读取1个shell的命令输出?

回答

0

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

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

+0

戈捷,所以是有反正我能做到这一点? – user3446120

0

您打开shell:1现在执行一些命令。 现在关闭该shell。

打开新shell2后并使用system()命令将有executated命令的信息中抽壳


,直到您关闭当前的shell,它的历史是不是在全球历史文件刷新。

是系统会打开自己的上下文。


OP:ⅰ执行从的 系统在启动运行在主壳此命令,所以是有什么办法可以手动刷新它?

对于您需要在您的.bashrc文件中加入这一行

export PROMPT_COMMAND='history -a' 

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

+0

先生,我在从系统启动运行的主外壳上执行此命令,所以有什么办法可以手动清除它? – user3446120

+0

@ user3446120更新了我对该问题的回答 –

+0

@ user3446120确实有效吗? –

相关问题