Linux 终端密码安全输入指南

问题背景

在共用服务器上,`export PASSWORD=secret` 这类命令会被记录在历史记录中,

其他用户执行 `history` 就能看到,存在安全风险。


方法一:命令前加空格

在命令最前面加一个空格,bash 默认不会将其写入历史记录。

bash 复制代码
 export MY_PASSWORD=secret123

⚠️ 注意:命令最前面有一个空格

前提条件

需要确认 HISTCONTROL 已包含 ignorespace

复制代码
echo $HISTCONTROL
# 输出应包含 ignorespace 或 ignoreboth

如果不包含,手动设置

临时生效(当前 session)

复制代码
export HISTCONTROL=ignoreboth

永久生效

复制代码
echo 'export HISTCONTROL=ignoreboth' >> ~/.bashrc
source ~/.bashrc

ignoreboth 同时启用以下两个选项:

选项 作用
ignorespace 命令前有空格则不记录
ignoredups 重复命令不记录

方法二:read 交互式输入(推荐)

密码完全不出现在命令行,是最安全的方式。

复制代码
read -s -p "Enter password: " MY_PASSWORD && export MY_PASSWORD
参数 说明
-s silent 模式,输入时不回显
-p 显示提示语

方法对比

方法 安全性 便捷性 适用场景
命令前加空格 ⭐⭐⭐ ⭐⭐⭐⭐⭐ 快速临时使用
read 交互输入 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ 推荐日常使用