协慌网

登录 贡献 社区

如何在不注销并重新登录的情况下重新加载. bashrc?

如果我对.bashrc进行更改,如何在不注销并重新登录的情况下重新加载?

答案

您只需输入命令:

source ~/.bashrc

或者您可以使用命令的较短版本:

. ~/.bashrc

或者你可以使用;

exec bash

做同样的事情。 (更容易记住,至少对我而言)

exec命令用给定的程序替换 shell,在我们的例子中,它用 bash 替换我们的 shell(使用更新的配置文件)

为了补充和对比两个最受欢迎的答案, . ~/.bashrcexec bash

两种解决方案都有效地重新加载~/.bashrc ,但存在差异:

  • . ~/.bashrcsource ~/.bashrc保留您当前的 shell

    • 除了将~/.bashrc重新加载到当前 shell( sourcing )中的修改外, 保留 当前 shell 及其状态 ,包括环境变量,shell 变量,shell 选项,shell 函数和命令历史记录。
  • exec bash ,或更强大的exec "$BASH" [1] ,将新实例替换你当前的 shell ,因此保留你当前 shell 的环境变量 (包括你自己定义的那些)。

    • 换句话说:就 shell 变量,shell 函数,shell 选项,命令历史而言,对当前 shell 的任何临时更改都将丢失。

根据您的需要,可能首选一种或另一种方法。


[1] exec bash理论上可以执行启动当前 shell 的bash可执行文件不同的 bash可执行文件,如果它碰巧存在于前面$PATH列出的目录中。由于特殊变量$BASH始终包含启动当前 shell 的可执行文件的完整路径,因此exec "$BASH"保证使用相同的可执行文件。
的说明重"..."周围$BASH :双引号确保变量值被原样使用,而不被 Bash 解释; 如果值没有嵌入空格或其他 shell 元字符(在这种情况下不太可能),则不需要双引号,但使用它们是一种很好的习惯。