linux - 是否有任何标准机制或约定来防止 Bash 环境变量名称冲突?

标签 linux bash shell unix namespaces

本站http://www.tldp.org/LDP/abs/html/gotchas.html#PARCHILDPROBREF表示脚本不能更改其父级的环境变量。

因此,(除非脚本是源代码)脚本不会意外更改其父环境中巧合命名的环境变量。

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

例如 假设我不知道 vim 使用环境变量名称“VIMRUNTIME”。而且,巧合的是,我碰巧将该环境变量名称用于我自己的、无关的目的。然后 vim 将从 VIMRUNTIME 环境变量中获取垃圾。

是否有任何机制或标准的、众所周知的命名约定来避免这种类型的 namespace 冲突? 当然,我可以做一些事情,比如用某种前缀命名我的所有环境变量。但我想知道是否有任何众所周知的正式标准。或者,在 Bash 中是否有某种我没有找到的命名空间机制? 鼓励在评论中提出有关其他相关问题的建议。

最佳答案

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

如果遵循前缀样式,碰撞的几率会很小。这是你能做的最好的。

关于linux - 是否有任何标准机制或约定来防止 Bash 环境变量名称冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330056/

相关文章:

c - 将变量从 linux 内核传递给进程

python - 从 stdout 获取原始流数据到 python 程序

linux - 脚本会在超过物理内存的95%时自动重启Tomcat

linux - 为什么 wc 命令比预期的多了一个字符?

linux - Shell 脚本 - 这个日期表达式是什么意思

c++ - 控制台应用程序无法在 Linux 上运行

linux - 为什么即使我没有运行 nginx,也可以使用 Nginx 欢迎页面?

git - 如何从 bash 脚本中监听 webhooks?

python - 如何从 python 中运行 bash 脚本并获取所有输出?

bash - 在 Makefile 中锁定整个目标