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


当前回答

. ~/.bashrc

.是POSIX授权的内置


选择

source ~/.bashrc

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

exec bash

exec命令用给定的程序替换shell…–WhoSayIn公司

其他回答

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

包括bashrc文件:

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

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

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

这也会奏效。。

cd ~
source .bashrc

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

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

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

根据您的环境,您可能希望添加脚本,以便在打开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中的所有路径/脚本。