【问题标题】:Environmental variables are not reloading properly环境变量未正确重新加载
【发布时间】:2021-11-29 00:57:31
【问题描述】:

我真的不知道这怎么会发生。所以假设我在~/.bashrc 文件中添加了以下行:export asd='asd'

如果我现在保存并重新加载终端:exec bash 并检查该值,它存在:

$ echo $asd
asd

一切都很好,但是当我删除这个值时,当我删除行 export asd='asd' 并创建一个新的 bash 实例时,这个值仍然存在。

我可以修改值就好了..

【问题讨论】:

  • unset asdsudo reboot
  • 但是当你运行 exec bash 时,新的 Bash 实例会从其父级继承环境。如果在新的终端窗口中运行 Bash 会怎样?
  • 如果你想从初始化文件中刷新环境,请使用env -i bash -l

标签: bash environment-variables


【解决方案1】:

全局变量被传递给子进程。

[~] export asd='Hello World'
[~] sh
@sh-5.1$ echo $asd
Hello World

是否从 bashrc 中删除该命令并不重要,只要它是在您的环境中设置的,而是您需要先删除该全局变量。您可以使用您的活动 bash 会话的 envprintenv 列出所有活动的全局变量。

[~] export asd='Hello World'
[~] env | grep asd
asd=Hello World
[~] unset asd
[~] sh
@sh-5.1$ echo $asd

或者,您可以启动一个新的 shell,而无需从以前的 shell 调用它。这样,它将仅读取您的配置文件和 bashrc,而不传输为您正在使用的(子)shell 创建/活动的任何环境变量。

【讨论】:

    猜你喜欢
    • 2015-05-25
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多