为什么 bash_completion 脚本会持久存在于环境中?

为什么 bash_completion 脚本会持久存在于环境中?

我不小心将命令输入export到我的控制台模拟器(运行 Bash)中,而不是export -p,现在所有 bash_completion 脚本都持久地存在于我的环境中,甚至在重新启动后仍然存在。我想撤消该操作,但几个小时后仍无法解决。我在 /etc/bash.bashrc 中找到了它们,但没有看到它们的来源,并且在任何情况下仍然无法弄清楚没有export参数如何或为什么会造成如此大的损害。

这是在 Knoppix 下的非 rootknoppix帐户中。当我的su -root帐户没有这样的问题。

[更新:我不知道我在说什么。我所说的“环境”是指 Bash 内置函数的输出set,这是函数显示的地方。我应该使用env.不管怎样,发生的事情是我一直set在我的 Makefile 中使用来测试某些值的生成,我很惊讶地突然在输出中看到所有这些函数。然后重新启动后,我从命令行检查,仍然看到它们,没有想到从 Makefile 中检查(它们不再显示,没有被导出。所以,问题解决了;它们显然一直在我的set输出中,只是没有'之前没有注意到它们,直到意外地export在我的输出中输入并看到它们make set,但 bash 的文档似乎与行为不匹配;export没有名称应该返回导出变量的列表,而不是导出所有内容。)]

答案1

您可以列出所有变量env并使用unset $VARIABLE它从环境中删除所有不必要的变量,从而解决您的问题。您必须小心取消设置正确的变量,因为例如,如果取消设置 PATH,您将无法运行任何命令/应用程序。

虽然这不能解释 bash_completion 脚本出了什么问题,但它会撤消意外的export.

相关内容