Answers:
当您想bash停止记录命令时,只需取消设置HISTFILE变量:
HISTFILE=
然后,所有其他命令都将不再登录.bash_history。
另一方面,如果您实际上将密码作为命令的参数来提供,则您已经在做错了事。.bash_history无法在世界范围内读取,因此在这种情况下不是最大的威胁:
ps并且/proc是很大的问题。系统上的所有用户都可以使用所有参数看到您当前正在运行的命令。因此,将密码作为命令行参数传递本质上是不安全的。使用环境变量或配置文件(已修改600)安全地提供密码。
unset HISTFILE具有类似的效果。我对此有一个功能:n() { HISTFILE=; PS1="~${PS1#\~}"; }。这样,我可以清楚地看到自己是否处于“隐身模式”。
HISTCONTROL=ignorespace
如果尚未为设置此选项bash,则可能正是您所需要的。它比禁用所有历史记录更令人沮丧。使用此设置后,任何以空格字符开头的命令行都不会保存到历史记录列表中。
从这些相关链接:
您可以暂时禁用历史记录: set +o history
set +o history
...
set -o history
禁用历史记录和取消设置之间有区别HISTFILE:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
输出如下所示:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
即所有命令都保存在历史列表中。输入exit以保存它。
但
set +o history
date
ls
set -o history
history
输出如下所示:
115 set +o history
116 history
摘要:
set +o history长时间的会议。
HISTCONTROL而<space>command在其他的时间。
cat | bash将运行非交互式,bash而不进行提示,命令行编辑(仅是行学科的内部编辑器)或历史记录。