如何从命令行重新加载.bash_profile?


993

我怎样才能重新加载.bash_profile命令行

我可以.bash_profile通过退出并重新登录来使Shell识别对更改的更改,但是我希望能够按需进行更改。

Answers:


1879

只需输入 source ~/.bash_profile

或者,如果您喜欢保存击键,则可以键入 . ~/.bash_profile


49
如何alias BASHRELOAD=". ~/.bash_profile"。如果您经常这样做,则可以将其别名为br
bobobobo

1
有什么理由为什么我需要每一次/每次会议都这样做?我无法对.bash_profile进行更改,即使我在编辑器中将其打开时也无法将其保留在文件中。令人困惑。
erwinheiser

3
@erwinheiser您的系统正在加载文件吗?某些系统使用其他文件,例如〜/ .bashrc。
Graham P Heath 2014年

1
如果您想知道负载是否出了问题,可以使用:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Cristian Batista,

1
对于忘记了您切换到OhMyZsh的人。运行
open〜

105
. ~/.bash_profile

只要确保您对那里的当前状态没有任何依赖即可。


15
为什么这样做?即,.在这种情况下,命令是什么?
乔纳2014年

9
点运算符:.只是source命令的别名。
Graham P Heath

8
@GrahamPHeath-严格来说,我认为这是相反的方式;的.比旧的sourceIS。
卡尔·诺鲁姆

4
source是Bash的特定实现.
Thirupathi Thangavel 2015年

7
@StasS - .source字面上在bash同样的事情。在链接中:“ 在bash中source是点/句号'的同义词.,但在POSIX sh中不是,所以为了最大的兼容性,请使用句点。”
卡尔·诺鲁姆

31

只需键入:

. ~/.bash_profile

但是,如果要让其在终端启动时自动运行而不是在每次打开终端时都运行它,则可以将其添加. ~/.bash_profile~/.bashrc文件中。

注意:

当您打开终端时,终端以(非登录)交互模式启动bash,这意味着它将启动~/.bashrc

~/.bash_profile仅在以交互式登录方式启动时由bash来源。这通常是只有当你登录在控制台(Ctrl+ Alt+ F1... F6),或通过连接ssh


15

您也可以使用此命令为该用户重新加载〜/ .bash_profile。确保使用破折号。

su - username

6
这将调用外壳中的整个外壳,这远非理想。其他选项只是简单地重新执行相关文件,这意味着它们与(A)实际上与所询问的问题相关,并且(B)不堆积外壳,并可能重新加载了其他不应该的内容(env vars等)。有一些适当的方法可以完全替换当前的shell(不嵌套),但是由于这是题外话,我将让感兴趣的读者在其他地方搜索。
underscore_d

3
您要打开另一个外壳,这不是重新加载,您也可以打开新的终端或重新登录
Juan Diego



10

如果您不介意丢失当前Shell终端的历史记录,也可以这样做

bash -l

那将分叉您的外壳并打开bash的另一个子进程。该-l参数告诉bash作为登录外壳运行,这是必需的,因为.bash_profile不会作为非登录外壳运行,有关更多信息,请参见此处

如果要完全替换当前的外壳,也可以执行以下操作:

exec bash -l

上面的内容不会派生您当前的外壳程序,而是将其完全替换,因此,键入exit时它将完全终止,而不是将您放到先前的外壳程序中。


如果使用iterm2,则不会丢失您的历史记录
Xitcod13 '19



3

我想发布一个快速的答案,在使用source ~/.bash_profile或上述答案有效时,要提及的一件事是,这只会在您正在查看的当前选项卡或会话中重新加载bash配置文件。如果希望在每个选项卡/外壳上重新加载bash配置文件,则需要在每个选项卡/外壳中手动输入此命令。

如果使用iTerm,则可以使用CMD⌘+ Shift+ I在所有当前选项卡中输入命令。对于终端而言,参考此问题可能很有用;



2

我使用Debian,我可以简单地键入exec bash以实现此目的。我不能说它是否可以在所有其他发行版上使用。


2
这在Mac(至少不能在我使用的版本
-Sierra)中

@Ulukai显然只要. .bash_profile在Mac上的主目录中键入即可完成此工作。与上述7urkm3n的答复相同。
卡桑德拉(Cassandra)

2
alias reload!=". ~/.bash_profile"

还是想通过功能添加日志

function reload! () {
    echo "Reloading bash profile...!"
    source ~/.bash_profile
    echo "Reloaded!!!"
}

不,按您的喜好。如果您想添加一些额外的显示状态的打印行,也请. ~/. bash_profile 不要简单地进行操作source ~/.bash_profile
7urkm3n

1

我正在运行Sierra,并为此做了一段时间(尝试所有推荐的解决方案)。我很困惑,所以最终尝试重新启动计算机!有效

我的结论是,有时需要进行硬重置


1
迈克(Mike)是,硬重置将起作用,因为然后重新加载所有内容。只要所做的更改都起作用,它将在下次启动时生效。但是,您可以更轻松地进行一些挖掘以查找仅刷新bash的命令/方法,而不必始终这样做。有一种无需重新启动即可实现的方法,这当然会浪费太多时间,只是为了看看最新的更改是否有效!也许看看osxdaily.com/2016/06/07/…–
Cassandra

1
是的,我尝试使用缩写和完整命令来重新加载bash配置文件/路径。它没有用,只能注销然后再登录。怪异
比约克斯是第一名球迷,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.