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

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

答案

您只需要输入命令:

source ~/.bashrc

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

. ~/.bashrc

或者您可以使用:

exec bash

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

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

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

两种解决方案都有效地重新加载~/.bashrc ,但是有一些区别:

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

    • 除了将~/.bashrc重新加载到当前外壳程序( sourcing )中所做的修改之外, 当前外壳程序及其状态都将保留 ,其中包括环境变量,外壳程序变量,外壳程序选项,外壳函数和命令历史记录。
  • exec bash或更确切地说是exec "$BASH" [1] ,将用一个新实例替换当前的 shell ,因此保留当前 shell 的环境变量 (包括您自定义的变量 )。

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

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


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

有人编辑了我的答案以添加不正确的英语,但这是原始答案,不如被接受的答案。

. .bashrc

根据您的环境,只需键入

bash

可能也可以。

有了这个,你甚至不必输入 “源〜/ .bashrc 中”:

包括您的 bashrc 文件:

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

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

. ~/.bashrc

.是 POSIX 强制内置的


备择方案

source ~/.bashrc

source是点 / 句点的同义词.在 bash 中,但不在 POSIX sh 中,因此为了获得最大的兼容性,请使用句点。

exec bash
  • exec命令给定程序替换 shell ... – WhoSayIn

根据您的环境,您可能需要添加脚本以在打开 SSH 会话时自动加载. bashrc。我最近迁移到了运行 Ubuntu 的服务器,默认情况下加载的是. profile,而不是. bashrc 或. bash_profile。要在. bashrc 中运行任何脚本,每次打开会话时都必须运行source ~/.bashrc ,这在运行远程部署时无济于事。

要在打开会话时自动加载. bashrc,请尝试将其添加到. profile 中:

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

重新打开会话,它将加载. bashrc 中的所有路径 / 脚本。

对我来说,更改 PATH 时起作用的是: exec "$BASH" --login

我使用 easyengine 设置了基于 vultr 云的服务器。
我在/etc/bash.bashrc找到了我的 bash 文件。

因此, source /etc/bash.bashrc为我成功了!

更新

设置裸服务器(ubuntu 16.04)时,如果尚未设置用户名并通过 root 登录,则可以使用以上信息。

最好创建一个用户(具有 sudo privledges),然后以该用户名登录。
这将为您的设置创建一个目录,包括. profile 和. bashrc 文件。
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/

现在,您将编辑和(和 “添加”) ~/.bashrc文件。

在我的服务器上,该文件位于/home/your_username/.bashrc
(其中your_username实际上是您在上面创建的新用户名,现在使用进行登录)