系统(“历史记录”)不工作 我遇到了一个难题,我试图用C++来实现一个Linux shell程序,而且我的许多命令似乎都是有效的,但是,当我试图获取历史(列出所有最近执行的命令)时,我得到一个“SH:1:历史:没有找到”的错误,下面的行是在这个区域运行的,问题是什么?p> system("history"); //produces the error above ^

系统(“历史记录”)不工作 我遇到了一个难题,我试图用C++来实现一个Linux shell程序,而且我的许多命令似乎都是有效的,但是,当我试图获取历史(列出所有最近执行的命令)时,我得到一个“SH:1:历史:没有找到”的错误,下面的行是在这个区域运行的,问题是什么?p> system("history"); //produces the error above ^,c++,linux,C++,Linux,如果我这样做 $ history >从命令行看,为什么C++中不好?< /P> < P> 系统< /C>使用“代码>/bin /s< /CODE >执行程序,但是历史是BASH构建器。< /P> 您可以查看~/.bash\u history的内容。(注意(leemes).bash_history仅在关闭前一个bash会话后更新,并且不会通过使用system执行命令进行更新),因为它是一个bash shell内置程序,不一定可以通过/bin/sh-c`(可能是bourne shell)访问.因

如果我这样做

$ history

>从命令行看,为什么C++中不好?< /P> < P> <代码>系统< /C>使用“代码>/bin /s< /CODE >执行程序,但是<代码>历史<代码>是BASH构建器。< /P>


您可以查看
~/.bash\u history
的内容。(注意(leemes)
.bash_history
仅在关闭前一个bash会话后更新,并且不会通过使用
system
执行命令进行更新)

,因为它是一个bash shell内置程序,不一定可以通过/bin/sh-c`(可能是bourne shell)访问.

因为
history
不是
路径中的可执行文件,而是由
bash
提供的shell命令。因此,如果要编写shell,您需要将
history
作为一个内置项自己实现(很像
cd
也应该是一个内置项)但请注意,
.bash\u history
仅在关闭前一个bash会话后更新,并且不会通过使用
system
执行命令来更新。如果OP试图获取使用
系统执行的命令的历史记录,它将不会有帮助。我必须查看~/.bash_历史记录,感谢指针@Csq!!有没有办法从C调用历史记录?使用bash_历史并不能解决用例。