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


当前回答

您可以输入长格式命令:

source ~/.bashrc

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

. ~/.bashrc

其他回答

. ~/.bashrc

.是POSIX授权的内置


选择

source ~/.bashrc

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

exec bash

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

我注意到纯exec bash命令将保留环境变量,因此需要使用exec-c bash在空环境中运行bash。

例如,登录一个bash,然后导出a=1,如果执行bash,则a==1。

如果执行-cl bash,则A为空。

我认为这是完成你工作的最佳方式。

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

假设是一个交互式shell,并且您希望保留当前的命令历史记录并加载/etc/profile(它加载环境数据,包括/etc/bashrc,在Mac OS X上,通过path_helper加载/etc/paths.d/中定义的路径),附加命令历史记录,并使用login('-l')选项执行bash:

history -a && exec bash -l

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

. .bashrc