以某种方式设置环境变量(密码),其价值不能保存到bash历史记录中



当我以root登录到mysql时,我通常会设置mrootpass环境变量

export MROOTPASS=my-secret-password

然后做

mysql -u root -p$MROOTPASS

这消除了每次我将密码连接到MySQL作为root时重新输入密码的需求,但是显然这是不安全的,因为密码已将密码保存到BASH历史记录文件中。是否可以防止密码保存?

您只需使用

输入变量
read -s -p "Enter password:" MROOTPASS 

这样,如果不必将其保存到文件中,也不会出现在任何地方。相反,您只需要输入一次即可。-s选项告诉读取不要回荡键入字符,因此在输入时没有人可以查找。

编辑:接受这个答案后很长时间有人说,这并不能定义系统变量,而是壳变量。如果您需要在子壳中可见变量,则只需要在读取语句(bash(下方添加以下行来导出变量:

export MROOTPASS 

read内置命令的人页:

  • bash
  • zsh
  • dash-具有read内置,但不支持此用例
$ read -rs PASSWORD
$ export PASSWORD

最新更新