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

1213
我该如何从命令行重新加载 .bash_profile 文件呢?尽管退出登录然后重新登录可以让 shell 识别到 .bash_profile 的更改,但我希望能够按需重新加载它。
15个回答

2266

只需键入source ~/.bash_profile

或者,如果你喜欢节省按键,你可以键入. ~/.bash_profile


59
如果您经常使用命令". ~/.bash_profile",您可以将其设置为别名"BASHRELOAD",例如alias BASHRELOAD=". ~/.bash_profile",这样做的话,您只需要键入"br"即可运行该命令。 - bobobobo
1
有什么原因我每次/会话都需要这样做吗?尽管在编辑器中打开文件时更改已经存在于文件中,但我无法使对.bash_profile所做的更改持久化。令人困惑。 - erwinheiser
3
你的系统是否正在加载这个文件?有些系统会使用其他文件,比如~/.bashrc。 - Graham P Heath
3
如果您想知道加载过程中是否出现错误,可以使用以下命令:alias reload='source ~/.bash_profile && echo "文件 .bash_profile 已成功重新加载" || echo "语法错误,无法导入文件"'; - Cristian Batista
4
如果你忘记了已经切换到了OhMyZsh,运行open ~/.zshrc并在那里进行更改,而不是在你的.bash_profile文件中进行更改。 - Sankofa
显示剩余4条评论

134
. ~/.bash_profile

只需确保您在其中没有任何对当前状态的依赖。


15
为什么这个方法有效?也就是说,在这种情况下,“.”命令是什么意思? - Jonah
11
“.” 运算符只是 source 命令的别名。 - Graham P Heath
10
严格来说,我认为实际情况是相反的;.source更早。 - Carl Norum
5
source 是 Bash 特有的实现方式,用于执行文件中的命令。 - Thirupathi Thangavel
8
在Bash中,“.”和“source”实际上是相同的东西。从链接中可以看到:“source在Bash中是点号'.'的同义词,但在POSIX sh中不是,因此为了最大兼容性,请使用点号。” - Carl Norum
显示剩余3条评论

36

只需输入:

. ~/.bash_profile

然而,如果你想让它在终端启动时自动运行,而不是每次打开终端都运行它,你可以把. ~/.bash_profile添加到~/.bashrc文件中。

注意:

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

~/.bash_profile仅在bash以交互登录模式启动时被source。通常情况下,只有在你通过控制台登录(Ctrl+Alt+F1...F6),或者通过ssh连接时才会出现。


25
如果您不介意失去当前Shell终端的历史记录,也可以执行以下操作:bash -l。这将分叉您的Shell并打开Bash的另一个子进程。-l参数告诉Bash以登录Shell运行。这是必须的,因为.bash_profile不会在非登录Shell上运行。欲了解更多相关信息,请点击此处
如果您想完全替换当前Shell,也可以执行:exec bash -l。以上命令将不会分叉当前Shell,而是完全替换它,所以当您输入exit时,它将完全终止,而不是返回到以前的Shell。

1
如果您使用iterm2,您不会失去历史记录。 - Xitcod13

17

你也可以使用这个命令重新加载该用户的~/.bash_profile文件。确保使用破折号。

su - username

7
这将在一个shell内调用整个shell,这远非理想。其他选项只是重新执行相关文件,意味着它们(A)实际上与所询问的问题有关,(B)不会堆积shell并可能重新加载其他不应该被重新加载的东西(环境变量等)。确实有正确的方法可以直接替换当前shell(而不是嵌套),但由于这是离题的,我会让感兴趣的读者在其他地方搜索。 - underscore_d
4
你正在打开另一个命令行窗口,这不是重新加载,你最好打开一个新的终端或重新登录。 - Juan Diego

15

也许在你的回答中解释一下?"."是"source"的别名。在man页面上,它靠近“在当前shell环境中执行并返回最后一个执行的命令的退出状态”(虽然不是很有帮助(太简洁了))。 - Peter Mortensen

13

10
  1. 保存.bash_profile文件
  2. 输入cd进入用户的主目录
  3. 使用. .bash_profile重新加载配置文件

8
只需使用 cd 命令即可回到主目录,不需要输入 ~ - roNn23
9
无需使用cd命令 - 您可以直接从当前目录重新加载它:. ~/.bash_profile - Alex Villa

7

如果 .bash_profile 文件不存在,你可以尝试运行以下命令:

. ~/.bashrc

或者

source ~/.bashrc

使用.bashrc而不是.bash_profile

关于bashrc,您可以找到更多信息。


4

使用

alias reload!=". ~/.bash_profile"

如果想通过函数添加日志:

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

不,这取决于您的个人喜好。如果想要添加一些额外的打印行来显示状态,可以选择使用. ~/.bash_profile或者source ~/.bash_profile - 7urkm3n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接