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

问题描述 投票:1414回答:17

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

bash terminal reload profile
17个回答
2310
投票

您只需输入命令:

source ~/.bashrc

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

. ~/.bashrc

3
投票

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

所以source /etc/bash.bashrc为我做了诀窍!

更新

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

最好创建一个用户(具有sudo权限),并以此用户名登录。 这将为您的设置创建一个目录,包括.profile和.bashrc文件。 qazxsw poi

现在,您将编辑和(和“源”)https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/文件。

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


2
投票

类型:

your_username

或者,以较短的形式:

source ~/.bashrc


2
投票

exec bash是重新执行和启动新shell以替换当前的一种很好的方法。只是为了添加答案,$ SHELL返回当前shell,即bash。通过使用以下内容,它将重新加载当前shell,而不仅仅是bash。

. ~/.bashrc


1
投票

我在msysgit上使用以下命令

exec $SHELL -l;

缩短版

. ~/.bashrc

1
投票

这也有效..

source ~/.bashrc

1
投票

我注意到纯cd ~ source .bashrc 命令将保留环境变量,因此您需要使用exec bash在空的环境中运行bash。

例如,你登录bash,和exec -c bash,如果你export A=1exec bash

如果你A == 1exec -cl bash是空的。

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


1
投票

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

A

-2
投票

我个人有

history -a && exec bash -l

在我的bashrc中,所以我可以使用“..”重新加载它。


240
投票

或者你可以使用;

exec bash

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

exec命令用给定的程序替换shell,在我们的例子中,它用bash替换我们的shell(使用更新的配置文件)


106
投票

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

两种解决方案都有效地重新加载~/.bashrc,但存在差异:

  • . ~/.bashrcsource ~/.bashrc将保留您当前的shell: 除了将~/.bashrc重新加载到当前shell(sourcing)中的修改外,还保留当前shell及其状态,包括环境变量,shell变量,shell选项,shell函数和命令历史记录。
  • exec bash,或者更强大的exec "$BASH" [1],将用新实例替换你当前的shell,因此只保留你当前shell的环境变量(包括你自己定义的那些)。 换句话说:就shell变量,shell函数,shell选项,命令历史而言,对当前shell的任何临时更改都将丢失。

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


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


45
投票

有人编辑我的答案添加错误的英语,但这是原始的,这不如接受的答案。

. .bashrc

18
投票

根据您的环境,只需输入

bash

也可以工作。


16
投票

有了这个,你甚至不必输入“source~ / .bashrc”:

包括你的bashrc文件:

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

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


10
投票
. ~/.bashrc

. is a POSIX-mandated builtin


备择方案

source ~/.bashrc

source is a synonym for dot/period . in bash, but not in POSIX sh, so for maximum compatibility use the period.

exec bash
  • exec命令用给定的程序替换shell ... - WhoSayIn

5
投票

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


3
投票

对我来说,当我改变PATH时有用的是:exec "$BASH" --login

© www.soinside.com 2019 - 2024. All rights reserved.