我做了一个小的bash脚本来清理一些文件(*〜,*#等)和终端,但是我已经看到默认情况下在非交互式shell中禁用了history命令通过bash(我想添加"历史-c")。
我只是好奇为什么?
答案 0 :(得分:2)
set -H
。历史记录在POSIX sh标准的User Portability Utilities部分中指定,该部分侧重于支持交互式脚本。引用标准,重点补充:
以交互方式使用sh实用程序时,它应保留先前从
HISTFILE
环境变量命名的文件中的终端输入的命令列表。未指定此文件的类型,大小和内部格式。如果文件访问权限允许,多个sh
进程可以共享对用户的文件访问权限;请参阅HISTFILE
环境变量的说明。
最后,一些背景:
交互式脚本中需要 history -c
,因为该交互式shell将在退出时写入HISTFILE
的新副本;如果您没有使用特殊命令,它可能会写回您想要清除的内容。在非交互式shell中,它无论如何都不会写任何历史记录,所以你不妨简单地删除或截断历史文件。