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


当前回答

execbash是重新执行和启动新shell以替换当前shell的好方法。为了补充答案,$SHELL返回当前的SHELL,即bash。通过使用以下命令,它将重新加载当前shell,而不仅仅是bash。

exec $SHELL -l;

其他回答

我编写了一组名为bash_magic的脚本,这些脚本可以跨多个shell自动执行此过程。如果您更新bashmagicshell目录(默认情况下为.bash.d)中的shell文件,它将在下一个提示下自动源代码更新。因此,一旦您进行了更改,只需按Enter键/回车键,任何更新都将被获取。

有人编辑了我的答案,添加了不正确的英语,但这是原文,比公认的答案差。

. .bashrc

您可以输入长格式命令:

source ~/.bashrc

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

. ~/.bashrc

或者您可以使用:

exec bash

这样做也是一样的,而且更容易记住(至少对我来说)。

exec命令通过运行指定的命令行完全替换shell进程。在我们的示例中,它用一个新的bash实例(用更新的配置文件)替换当前的shell。

我知道你想要一个shell,因为在注销并再次登录后。我认为实现这一目标的最佳方式是:

exec env -i HOME="$HOME" "$SHELL" -l

exec将替换当前的shell,这样当新的shell退出时就不会剩下它了。env将创建一个新的空环境,使用-i,我们添加$HOME,这样$shell提供的shell(通常是bash)可以找到~/.profile/~/.bash_profile(因此(在ubuntu上或如果指定)~/.bash rc)。不过我不完全确定。