是否可以在父终端中获取最后一个命令 运行?

Is it possible to fetch the last command ran in a parent terminal?

我正在尝试以编程方式从子进程中的 bash 终端获取历史记录(转到可执行文件)。我实际上是在寻找终端具有的最后 N 个命令 运行.

流量:

  1. 打开bash终端PID=5
  2. 运行 几个命令(sed、rpm、gpg)
  3. 运行 go executable PID=32 PPID=5
  4. 从父进程(bash 终端)获取命令和参数(sed、rpm、gpg)并打印它们

当 go/shell 下的 运行 输出时,bash 内置 history 不会产生正确的结果。

读取 ~/.bash_history 不准确,因为 bash 终端的历史记录是在提示关闭时写入的。

想知道这是否可能?

按照建议 here,您可以使用 history -a <file_path> 将新命令保存到文件中,然后在子进程中您可以从文件中读取最后 N 行(使用 tail -n <N> ).