分离进程之间的持久 Bash 历史记录

分离进程之间的持久 Bash 历史记录

我还没有在 Bash 文档中找到这个问题,所以我希望如果我在这里询问它可以得到答案。有什么方法可以在执行脚本时分支其历史记录(即与调用脚本的父进程中的 shell 具有相同的历史记录,而不使用source.)并且在完成后不具有其历史记录历史记录在~/.bash_history

不记录其历史记录的目的是使调用脚本之前的最后一个命令仅成为调用脚本之后的倒数第二个命令。最简单的方法是使用set -o history,记录执行的命令数,然后在脚本末尾删除那么多行吗$HISTFILE

答案1

运行 shell 脚本会启动一个 Bash 进程非交互式壳。在这种模式下,历史扩展实际上并没有进行。从 Bash 手册页来看,man bash

历史扩展

shell 支持历史扩展功能,类似于 csh 中的历史扩展。本节介绍可用的语法功能。默认情况下,交互式 shell 启用此功能,并且可以使用 set 内置命令的 +H 选项禁用此功能(请参阅下面的 SHELL BUILTIN COMMANDS)。默认情况下,非交互式 shell 不执行历史记录扩展。

我没有看到任何提及让脚本将其命令保存到 Bash 历史文件的内容,但我在实践中从未见过这种情况发生。

我假设您以标准方式运行脚本(作为包含 shell 命令的可执行文件或通过提供脚本名称作为 bash 命令的参数)。如果我没有正确解释您的问题,您可以编辑您的问题以澄清吗?

相关内容