如何防止“rlwrap”将密码保存在输入历史文件中?

如何防止“rlwrap”将密码保存在输入历史文件中?

rlwrap我在以下 shell 别名中使用该实用程序:

alias gp='rlwrap git push'

此别名的目的gp是能够在我使用命令时使用基本的行编辑命令,例如C-aC-e到达命令行的开头或结尾git push

我还配置了在专用文件 ( )rlwrap中写入我使用的每个命令的输入历史记录:~/.config/rlwrap/<command>_history

export RLWRAP_HOME="${HOME}/.config/rlwrap"

当我使用gp别名时,我必须提供我的凭据、用户名和密码,并将rlwrap它们保存在~/.config/rlwrap/git_history.

是否可以保存rlwrap我使用的所有命令的输入历史记录(密码除外),例如在别名中gp

答案1

我想我刚刚找到了一种方法来防止保存当前输入行。从man rlwrap

SPECIAL KEYS
   Control + O
          Accept the current line, but don't put it in the history list. This action has a readline command name
          rlwrap-accept-line-and-forget

因此,如果我使用 验证行Enter,而不是使用 验证行C-o,则不应保存该行。


也许我也可以使用该-g选项,但我不确定是否可以构建一个描述密码的正则表达式,而无需同时描述普通输入:

       -g, --forget-matching regexp
          Forget  (i.e.  drop  from history list) all input lines that match the POSIX 1003.2 regular expression
          regexp.  The match is always case-insensitive. regexp may be an ordinary string. For more about  regu‐
          lar expressions, see  regex (7)

答案2

我必须提供我的凭据、用户名和密码,rlwrap 将它们保存在 ~/.config/rlwrap/git_history 中

你确定rlwrap确实拯救了你的密码在它的历史文件中?根据设计,不回显的输入是绝不放入历史列表中(在这种情况下,rlwrap将回显您的击键****)我检查了它,并且至少在我的系统上,这git push也是发生的情况。

rlwrap如果您确实在历史文件中看到您的密码,请在s提交错误GitHub 站点

答案3

您可以使用 rlwrap 的选项覆盖默认历史记录文件-H

例如alias gp='rlwrap -H /dev/null git push'

相关内容