我在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的最后一条历史命令。
请澄清以下疑问
为什么我无法从c文件中读取shell中执行的上一条历史命令?
是不是因为当我调用系统系统调用时,它会分配一个新shell?
如果是这样,我该如何实现?从其他人那里读取1个shell的命令输出?
答案 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/