防止Bash包含脚本中的变量污染



如果在Bash include脚本中引入变量,它将在原始环境中可用,并且可能与原始环境发生冲突。

有可能防止对原始环境的污染吗?

From virtualenv-bin/activate and /etc/bash_completion scripts:

  • 我看设置和独特的前缀,如 _LIB

  • 另一种将代码包装在函数中并使用非posix local关键字的方法。但是函数名可能与原始环境冲突。我不知道如何在Bash中创建和调用匿名函数

好吧,这完全取决于你如何执行你的脚本,如果你的目标确实是执行它并扩展你的环境,你没有太多的选择,除了使用()来分叉一个shell,并在其范围内执行所有变量,或者在bash脚本的末尾使用unset来从shell中删除所有不需要的变量。

否则,你可以简单地通过fork"正常"执行脚本,然后在将控制权交还给调用shell时,所有变量都不会超出被调用方的作用域。

最后,你没有给出足够的背景来给你的问题一个明确和精确的答案,除了一般的建议。

最新更新