理解 Linux Shell 中前导空格的行为
概述
在像 bash 这样的 Linux shell 环境中,命令前加一个空格可能会影响该命令是否被保存到命令历史中。
这个小技巧在处理敏感数据时非常有用,或者当你不希望某个命令被记录下来时也能派上用场。
关键变量:HISTCONTROL
这种行为是由一个叫做 HISTCONTROL 的 shell 环境变量控制的。
查看当前设置的方法如下:
echo $HISTCONTROL
例如,你可能会看到:
ignoredups:ignorespace
值的含义解释
| 选项 | 描述 |
|---|---|
ignoredups |
防止连续重复的命令被保存到历史中。 |
ignorespace |
防止以空格开头的命令被保存到历史中。 |
ignoreboth |
ignoredups:ignorespace 的简写形式。 |
使用示例
假设你想导出一个密钥,但又不希望它出现在历史记录中:
export AWS_SECRET_ACCESS_KEY="super-secret"
命令前加的空格(注意前面的空格)可以阻止它被写入 ~/.bash_history 文件(前提是 ignorespace 设置生效)。
注意事项
- 只有当
HISTCONTROL包含ignorespace时,此行为才生效。 - 命令本身的功能不会受到影响 —— 仍然正常执行。
- 如果没有设置
ignorespace,前导空格将没有任何特殊作用。
如何永久启用此功能
要确保每次打开终端都启用此功能,请在你的 ~/.bashrc 或 ~/.bash_profile 文件中加入如下内容:
export HISTCONTROL=ignoredups:ignorespace
然后刷新 shell 配置:
source ~/.bashrc
结语
在 Linux Shell 中命令前加一个空格,是一个简单却强大的技巧。它能防止敏感或临时命令被记录到历史中。对于开发者、系统管理员,或任何频繁使用终端的人来说,这都是一个非常实用的功能。
BASH小技巧
- Bash 编程: 计算两个正整数的最大公约数/GCD
- BASH: 如何使用 cURL 命令获取 HTTP 响应代码?
- 通过BASH脚本显示树莓PI的温度和频率
- 如何通过BASH命令把频繁访问服务器的IP找出来?
- BASH编程: 计算一个文本文件中每个单词的频率
- LINUX BASH下的 大括号数组
- BASH 脚本 防止 iptablex 攻击
- BASH 脚本匹配 IP 地址的 简单例子 (正则表达式)
- 如何在 Linux 下 列出最耗资源的进程 (BASH 脚本)
- BASH: 通过dd命令测试硬盘读写速度/性能
- 判断服务器的硬盘类型: 是否是固态硬盘/NVMe
- LINUX 命令 cowsay, cowthink 牛说/牛想
- BASH: 怎样通过curl命令查看服务器响应时间??
- BASH: LINUX 下竖中指
英文:Why a Leading Space in Linux Shell Commands Can Matter?
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK