如何启用 bash 历史记录仅缓存实际在路径中的命令?

如何启用 bash 历史记录仅缓存实际在路径中的命令?

启用 bash 历史记录存在安全风险,因为当您不小心将密码输入到 bash 中时,密码会存储在 bash 历史记录中。为了防止这种情况,一个好的解决方案是配置 bash 历史记录不保存未在 $PATH 中找到的命令。

到目前为止,这就是我设置历史行为的方式

# Dont Save duplicated history lines
HISTCONTROL=irgnoredups:erasedups
HISTTIMEFORMAT="%F-%M-%S --> "
HISTIGNORE="su":"su *":"sudo *":"sudo":"his":"his *":"history":"history *":"halt":"reboot":"apt-get *":"apt-cache *":"aptitude *":"dpkg *"

# need a bigger history 
# uncomment these lines
#HISTSIZE=1000000
#HISTFILESIZE=1000000

有没有办法设置历史记录以便它只存储路径中的命令?

答案1

我想,您可以将所有命令放入变量中。

HISTIGNORE=${HISTIGNORE}:`find ${PATH//:/ } -printf %f: |sed s/:$//`

相关内容