如何在zsh中清除所有指定前缀的变量?
在Zsh中批量删除以AWS_开头的环境变量
Bash中可以用unset "${!AWS_@}"批量清除所有以AWS_开头的环境变量,但这个写法在Zsh中会因为参数展开机制差异报错。以下是Zsh中简洁的单行实现:
- 最优单行写法:
unset ${(M)parameters:#AWS_*}
写法说明:
${(M)parameters:#AWS_*}是Zsh专属的参数展开语法:parameters是内置数组,包含当前所有Shell参数(含环境变量)(M)修饰符表示仅保留匹配后续模式的元素#AWS_*为匹配规则,筛选出所有以AWS_开头的参数
另一种兼容思路(适配习惯Bash写法的用户):
unset $(compgen -v AWS_)注:
compgen -v会列出所有指定前缀开头的变量,再通过命令替换传递给unset执行批量删除。
内容的提问来源于stack exchange,提问作者Chris Dobbyn
相关产品推荐
相关产品推荐

