有没有任何标准的机制或约定来防止Bash环境variables名称冲突?

这个网站http://www.tldp.org/LDP/abs/html/gotchas.html#PARCHILDPROBREF表明一个脚本不能改变它的父母的环境variables。

所以,(除非是脚本来源),脚本不会在其父环境中意外地更改一个命名的环境variables。

但是,如果程序依赖于声明的环境variables,则可能会发生名称空间冲突。

例如,假设我不知道vim使用环境variables名称“VIMRUNTIME”。 而巧合的是,我碰巧把这个环境variables名称用于我自己的无关的目的。 然后vim会从VIMRUNTIME环境variables中获取垃圾。

是否有任何机制或标准,众所周知的命名约定来避免这种types的命名空间冲突? 当然,我可以做一些像使用某种前缀命名所有环境variables的东西。 但是我想知道是否有这方面的知名的正式标准。 或者,在Bash中有没有find某种名称空间机制? 鼓励在其他相关陷阱的意见。

我不认为有任何标准的机制,除了使用通用的前缀。 例如, ssh为其所有的环境变量使用SSH_xxx 。 不幸的是,许多遗留程序(例如shell)不遵循任何类型的约定。 而在许多不同的程序中使用的变量(例如TERMPAGER )没有一个程序名称作为前缀。

如果你遵循前缀的风格,碰撞的机会将会很小。 这是你能做的最好的。

不要导出它。 shell变量和环境变量是有区别的。