【问题标题】:How to clear all history in linux/ubuntu terminal or bash permanently? [closed]如何永久清除 linux/ubuntu 终端或 bash 中的所有历史记录? [关闭]
【发布时间】:2011-10-06 06:21:28
【问题描述】:

当您在 Linux 终端中使用向上键时,您可以再次使用之前的命令。很棒的功能。但是,我开始使用命令中的敏感详细信息将 mysql 记录到 mysql 中。

如何永久删除该历史记录?

【问题讨论】:

  • 对不起,我完全忘了提到我正在使用 bash。
  • 由于此问题已关闭,我无法将其添加为答案。您可以使用以下命令告诉 bash 不要为特定会话保存任何历史记录:export HISTFILE=/dev/null
  • 我也可以添加这个:不要在命令行输入敏感信息 - 等待提示:D

标签: linux bash ubuntu terminal


【解决方案1】:

您可以像这样清除 bash 历史记录:

history -cw

【讨论】:

  • 真的很喜欢这个答案 - 这会立即生效,而不是删除.bash_history 需要重新启动shell才能生效。
  • 不适用于我的 Ubuntu 14.04 机器。历史只出现在新终端上。所有有效的是>~/bash_history。不过,必须为此重新启动终端。
  • 也适用于 Mac OS X El Capitan(在版本 10.11.2 上测试),但您必须将以下行添加到您的 ~/.bash_profileexport SHELL_SESSION_HISTORY=0,然后执行 source ~/.bash_profile 和完成退出并重新启动您的终端应用程序。如果您想了解此导出命令的作用,那么您一定要查看以下链接:superuser.com/questions/950403/…
  • 只有-c还不够吗?手册说 -c 通过删除所有条目来清除历史记录列表。 -w 将当前历史写入历史文件并将它们附加到历史列表中。只是 -c 工作正常。
【解决方案2】:

如果您使用 bash,则终端历史记录保存在名为 .bash_history 的文件中。删除它,历史就会消失。

但是,对于 MySQL,更好的方法是不要在命令行中输入密码。如果您只指定 -p 选项,没有值,那么系统会提示您输入密码并且不会被记录。

如果您不想每次都输入密码,另一种选择是将其存储在 my.cnf 文件中。创建一个名为 ~/.my.cnf 的文件,其内容如下:

[client]
user = <username>
password = <password>

确保更改文件权限,以便只有您可以读取文件。

当然,这样你的密码仍然保存在主目录中的纯文本文件中,就像之前保存在 .bash_history 中一样。

【讨论】:

  • +1 用于指定-p。这完全是解决这个问题的正确方法
  • 实际上,在我的 Linux 系统上,bash 会记住历史记录并在注销时重新创建文件。您必须登录,删除文件,再次登录,注销第一个 shell,删除文件,然后注销第二个 shell。
  • 感谢您指出这一点。我认为直接在命令中使用 -p+password 选项很聪明,因为我有一个很长的密码,只需按向上箭头就快得多了。是时候重新考虑了..
  • 不要忘记unset HISTFILE,以免保存当前历史记录。
  • 我编辑了我的答案并添加了一个防止每次都输入密码的解决方案。
猜你喜欢
  • 2021-10-15
  • 2016-01-31
  • 2020-01-07
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2011-08-13
  • 2018-04-04
相关资源
最近更新 更多