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


当前回答

请注意,$SHELL可能会产生意想不到的结果例如,连接到Docker环境

echo $SHELL
/usr/sbin/nologin

所以,如果你尝试,你就会断开连接

exec $SHELL
This account is currently not available.

所以你可能需要使用更复杂的东西,比如

exec $(pgrep -l sh | grep "^`echo $$` " | cut -d" " -f2)

假设每个shell都包含“sh”

pgrep -l sh | grep "^`echo $$` " | cut -d" " -f2

生成完整的命令如果有参数或标志,则可能必须使用-f2、3、4或尝试

pgrep -l sh | grep "^`echo $$` " | sed -E 's/^[0-9]+ //'

但请阅读以上所有建议就我个人而言,我不喜欢泄露历史。。。但这取决于你和你的需要

其他回答

根据您的环境,只需键入

bash

也可能起作用。

这样,您甚至不必键入“source~/.bashrc”:

包括bashrc文件:

alias rc="vim ~/.bashrc && source ~/.bashrc"

每次您想编辑bashrc时,只需运行别名“rc”

或者您可以使用:

exec bash

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

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

我在msysgit上使用以下命令

. ~/.bashrc

的较短版本

source ~/.bashrc

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

exec $SHELL -l;