编辑 bashrc 文件后刷新环境变量

xia*_*012 71 bash environment-variables console

我经常编辑该.bashrc文件以导出新的环境变量。

与其关闭控制台并启动一个新的控制台来刷新 env 变量,还有一种方便的刷新方法吗?

n0p*_*0pe 94

在同一窗口中,您只需键入bash即可开始一个新窗口。这相当于关闭窗口并重新打开一个新窗口。

或者,您可以键入source ~/.bashrc以获取.bashrc文件。

  • 请注意,仅采购 bashrc 并不一定等于重新启动 bash。定义的变量不会自动取消定义。shell 选项不会自动取消设置。采购 bashrc 只执行 bashrc 中编写的内容。它不会回滚环境中的任何其他更改。在旧进程中启动新的 bash 会话也不一定等于重新启动 bash,因为新进程继承了旧进程的环境。 (13认同)
  • 无需执行另一个shell。`source` 是正确的方法 (8认同)
  • @Rush 输入 `source` 向用户显示调用了哪个命令。我不相信在新用户了解代码在做什么之前向他们展示速记命令。 (4认同)
  • @MaxMackie 考虑到 `source` 是一种打字时间较长的 bashism,但与它在所有等效 shell 中的可移植性相比没有任何优势,`.`,我认为没有必要鼓励任何人,无论是新手还是有经验的人使用它。 (4认同)
  • 也不需要输入长词`source`。你可以只输入点而不是它:`。~/.bashrc`。 (3认同)
  • @n0pe `这相当于关闭窗口并重新打开一个新窗口。`我认为这不是真的,因为新的 bash shell 在旧的 bash shell 中执行,因此旧的不会死。相反,当关闭终端时,该终端的 bash 会话将被终止,因此在您的 GUI 示例中,之后仅存在一个 bash。 (3认同)
  • 这只会添加新添加的变量,但不会删除 bashrc 文件中删除的变量。 (2认同)

Mat*_*teo 22

只需使用

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

或者

. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

  • 这是不对的,因为您可能已经在会话中定义但未在 bashrc 文件中重新定义(或未设置)的对象将保持定义状态 (2认同)

Lok*_*esh 5

除了其他人的建议之外,我发现source不会取消设置先前分配的环境变量。因此,如果您想取消设置环境变量,则必须使用unset <var>.


Top*_*Cat 5

添加到另一个答案,我发现定义以下别名很有帮助:

alias refreshenv="bash;exit"
Run Code Online (Sandbox Code Playgroud)

这样做将确保一旦退出子 bash 实例等,父 bash 实例就会被终止。避免您必须exit多次键入,因为您只需键入bash