在进行软件开发时,经常需要在命令行命令中包含机密信息。典型的例子是设置将项目部署到服务器作为环境变量的凭据。
当我不想将某些命令存储在命令历史记录中时,如何执行它们?
必须没有人能够在.bash_history文件中搜索它们。是否有一种方法可以这样执行Bash命令?
在进行软件开发时,经常需要在命令行命令中包含机密信息。典型的例子是设置将项目部署到服务器作为环境变量的凭据。
当我不想将某些命令存储在命令历史记录中时,如何执行它们?
必须没有人能够在.bash_history文件中搜索它们。是否有一种方法可以这样执行Bash命令?
当前回答
如果您想删除所有历史记录,包括删除所有历史记录的事实,这是很方便的!
rm .bash_history;export HISTFILE=/dev/null;exit
其他回答
以空格开始命令,它将不会包含在历史记录中。
注意,这需要设置环境变量$HISTCONTROL。
检查以下命令是否返回ignorespace或 ignoreboth: echo $ HISTCONTROL 如果缺少环境变量,可以将下面的行添加到Bash概要文件中。例如,文件%HOME/.bashrc。 出口HISTCONTROL = ignorespace
在再次获取概要文件之后,以空格为前缀的命令将不会被写入$HISTFILE。
echo "discreet";history -d $(history 1)
你可以用
export HISTFILE=/dev/null ;history -d $(history 1)
那就继续你的鬼把戏吧。将histfile设置为/dev/null将被记录到历史文件中,然而该条目将被轻松删除,并且不会显示任何痕迹(至少在历史文件中)。
而且,这是非永久性的。
如果您想删除所有历史记录,包括删除所有历史记录的事实,这是很方便的!
rm .bash_history;export HISTFILE=/dev/null;exit
John Doe和Cédric ROYER的答案的延伸。但是,这似乎对我有用。
<your_secret_command>; history -d $((HISTCMD-1))
您不应该在历史记录中看到该命令的条目。
下面是解释……
'history -d'从历史记录中删除所提到的条目。
HISTCMD存储下一个要执行的命令的command_number。因此,(HISTCMD-1)指的是最后执行的命令。
从Bash历史文件中删除某一行