如何打开隐身 bash 会话?

Mic*_* TM 53 shell bash command-history privacy

是否可以在 中打开隐身会话bash

例如,当我们需要在命令中输入密码而不想bash将它们添加到历史记录时。

Mar*_*ich 85

当您想bash停止记录您的命令时,只需取消设置HISTFILE变量:

HISTFILE=
Run Code Online (Sandbox Code Playgroud)

所有进一步的命令都不应再记录到.bash_history.

另一方面,如果您实际上将密码作为命令的参数提供,那么您已经做错了。.bash_history不是世界可读的,因此在这种情况下不是最大的威胁:

ps并且/proc是很大的问题。系统上的所有用户都可以看到您当前正在运行的命令及其所有参数。因此,将密码作为命令行参数传递本质上是不安全的。使用环境变量或配置文件(您已 chmodded 600)来安全地提供密码。

  • +1 用于解决实际问题,而不仅仅是回答问题。传递凭据的另一个选项是 Unix 域套接字。 (14认同)
  • 我已经使用 Linux 10 多年了,从没想过要这样做 +1 (5认同)
  • `unset HISTFILE` 也有类似的效果。我有一个函数:`n() { HISTFILE=; PS1="~${PS1#\~}"; }`。这样我就可以清楚地看到我是否处于“隐身模式”。 (4认同)
  • 另一个有用的提示是在“ HISTFILE =”之前添加一个空格。任何前面带有空格的命令都不会被记录。 (2认同)

Tim*_*tin 38

HISTCONTROL=ignorespace
Run Code Online (Sandbox Code Playgroud)

如果尚未为 设置此选项bash,则它可能正是您所需要的。与禁用所有历史记录相比,它没有那么令人衰弱。使用该设置,任何以空格字符开头的命令行都不会保存到历史列表中。

从这些相关链接:

为什么 bash 有 HISTCONTROL=ignorespace 选项?

为什么 bash 不存储以空格开头的命令?

  • 请注意,这通常是默认设置。 (6认同)