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

时间:2014-05-05 13:31:10

标签: bash posix sh

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

是否可以防止对原始环境的污染?

来自 virtualenv - bin / activate / etc / bash_completion 脚本:

  • 我看到未设置和唯一的前缀,例如 _LIB

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

1 个答案:

答案 0 :(得分:1)

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

否则,您可以简单地通过fork“正常”执行脚本,然后在将控制权交还给调用shell时,让所有变量都不会超出被调用范围。

最后,你没有提供足够的背景来为你的问题提供明确而准确的答案......除了一般的建议。