本站http://www.tldp.org/LDP/abs/html/gotchas.html#PARCHILDPROBREF表示脚本不能更改其父级的环境变量。
因此,(除非脚本是源代码)脚本不会意外更改其父环境中巧合命名的环境变量。
但是,如果程序依赖于它声明的环境变量,则可能会发生命名空间冲突。
例如 假设我不知道 vim 使用环境变量名称“VIMRUNTIME”。而且,巧合的是,我碰巧将该环境变量名称用于我自己的、无关的目的。然后 vim 将从 VIMRUNTIME 环境变量中获取垃圾。
是否有任何机制或标准的、众所周知的命名约定来避免这种类型的 namespace 冲突? 当然,我可以做一些事情,比如用某种前缀命名我的所有环境变量。但我想知道是否有任何众所周知的正式标准。或者,在 Bash 中是否有某种我没有找到的命名空间机制? 鼓励在评论中提出有关其他相关问题的建议。
最佳答案
除了使用通用前缀外,我认为没有任何标准机制。例如,ssh
将 SSH_xxx
用于其所有环境变量。不幸的是,许多遗留程序(例如 shell)不遵循任何类型的约定。许多不同程序中使用的变量(例如 TERM
、PAGER
)没有程序名称用作前缀。
如果遵循前缀样式,碰撞的几率会很小。这是你能做的最好的。
关于linux - 是否有任何标准机制或约定来防止 Bash 环境变量名称冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330056/