如果我对.bashrc进行了更改,如何在不注销并重新登录的情况下重新加载它?
当前回答
我使用easyfengine设置了基于vultr云的服务器。我在/etc/bash.basrc中找到了我的bash文件。
所以source/etc/bash.bashc为我做了这个把戏!
使现代化
在设置裸机(ubuntu 16.04)时,当您尚未设置用户名并通过root登录时,可以使用上述信息。
最好创建一个用户(具有sudo权限),并以该用户名登录。这将为您的设置创建一个目录,包括.profile和.bashrc文件,如前一个资源中所述。
现在,您将编辑和(并源代码)~/.bashrc文件。
在我的服务器上,它位于/home/your_username/.bashrc(其中your_username实际上是您在上面创建的新用户名,现在使用登录)
其他回答
或者您可以使用:
exec bash
这样做也是一样的,而且更容易记住(至少对我来说)。
exec命令通过运行指定的命令行完全替换shell进程。在我们的示例中,它用一个新的bash实例(用更新的配置文件)替换当前的shell。
请注意,$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]+ //'
但请阅读以上所有建议就我个人而言,我不喜欢泄露历史。。。但这取决于你和你的需要
您可以输入长格式命令:
source ~/.bashrc
或者可以使用命令的较短版本:
. ~/.bashrc
execbash是重新执行和启动新shell以替换当前shell的好方法。为了补充答案,$SHELL返回当前的SHELL,即bash。通过使用以下命令,它将重新加载当前shell,而不仅仅是bash。
exec $SHELL -l;
我在msysgit上使用以下命令
. ~/.bashrc
的较短版本
source ~/.bashrc