ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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


P
Peter Mortensen

只需键入 source ~/.bash_profile

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


alias BASHRELOAD=". ~/.bash_profile" 怎么样。如果您经常这样做,您可以将其别名为 br
为什么我每次/会话都需要这样做?我无法让对 .bash_profile 所做的更改持续存在,即使当我在编辑器中打开文件时它们存在于文件中。令人困惑。
@erwinheiser 您的系统正在加载文件吗?一些系统使用其他文件,例如 ~/.bashrc。
如果您想知道负载是否出现问题,您可以使用:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
对于忘记您切换到 OhMyZsh 的人。运行 open ~/.zshrc 并在那里进行更改而不是您的 .bash_profile
C
Carl Norum
. ~/.bash_profile

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


为什么这行得通?即,在这种情况下,. 命令是什么?
the dot operator: . 只是 source 命令的别名。
@GrahamPHeath - 严格来说,我认为这是相反的; . 早于 source
source. 的 bash 特定实现
@StasS - .source 在 bash 中实际上是相同的东西。来自链接:“source 是 bash 中点/句点 '.' 的同义词,但在 POSIX sh 中不是,因此为了获得最大的兼容性,请使用句点。”
j
jezrael

只需键入:

. ~/.bash_profile

但是,如果您希望它在终端启动时自动运行,而不是每次打开终端时都运行它,您可以将 . ~/.bash_profile 添加到 ~/.bashrc 文件。

笔记:

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

~/.bash_profile 仅在以交互式登录模式 启动时由 bash 提供。这通常仅在您登录控制台时(Ctrl+Alt+F1..F6),或通过 ssh 连接。


P
Peter Mortensen

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

bash -l

这将分叉你的 shell 并打开另一个 bash 子进程。 -l 参数告诉 Bash 作为登录 shell 运行。这是必需的,因为 .bash_profile 不会作为非登录 shell 运行。有关这方面的更多信息,read here

如果你想完全替换当前的 shell,你也可以这样做:

exec bash -l

上面不会派生你当前的 shell,而是完全替换它,所以当你输入 exit 时,它将完全终止,而不是让你回到以前的 shell。


如果您使用 iterm2,您不会丢失您的历史记录
j
jaypal singh

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

su - username

这将在一个外壳中调用整个外壳,远非理想。其他选项只是重新执行相关文件,这意味着它们 (A) 实际上与所提出的问题相关,并且 (B) 不堆积 shell 并且可能重新加载其他不应该的东西(环境变量等)。有一些适当的方法可以彻底替换当前的 shell(不嵌套),但由于这不是主题,我会让感兴趣的读者到其他地方搜索。
您正在打开另一个外壳,这不是重新加载您不妨打开一个新终端或重新登录
A
Asclepius

我喜欢这样一个事实,即在您刚刚编辑文件之后,您需要做的就是输入:

. !$

这将获取您刚刚在历史记录中编辑的文件。请参阅What is bang dollar in bash


也许在你的回答中解释一下? "." is an alias for "source"。在 the man page 上,它位于当前 shell 环境中的 " 附近,并返回从 " 执行的最后一个命令的退出状态(尽管没有那么有用(太简洁))。
P
Peter Mortensen

保存 .bash_profile 文件 通过键入 cd Reload the profile with 转到用户的主目录。 .bash_profile


cd一起回家吧。不需要~
无需 cd - 您可以从当前所在的目录重新加载它:. ~/.bash_profile
P
Peter Mortensen

您只需键入 . ~/.bash_profile

请参阅What does 'source' do?


P
Peter Mortensen

alias bashs="source ~/.bash_profile" 添加到您的 Bash 文件中。

因此,您可以在下次调用 bashs


我将其别名为 reset - 更容易记住
P
Peter Mortensen

利用

alias reload!=". ~/.bash_profile"

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

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

不,这是你的喜好。如果想添加一些显示状态的额外打印行,而不是简单地去 . ~/. bash_profile source ~/.bash_profile
P
Peter Mortensen

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

. ~/.bashrc

或者

source ~/.bashrc

而不是 .bash_profile。

您可以找到有关 bashrc 的更多信息。


P
Peter Mortensen

虽然使用 source ~/.bash_profile 或以前的答案有效,但要提到的一件事是,这只会在您正在查看的当前选项卡或会话中重新加载您的 Bash 配置文件。如果您希望在每个选项卡/shell 上重新加载 bash 配置文件,则需要在每个选项卡/shell 中手动输入此命令。

如果您使用 iTerm, you can use CMD⌘ + Shift + I to enter a command into all current tabs。对于终端,引用此 issue 可能很有用;


C
Cassandra

我使用 Debian,我可以简单地输入 exec bash 来实现这一点。我不能说它是否适用于所有其他发行版。


这在 Mac 中不起作用(至少在我使用的版本 - Sierra 中不起作用),因为只需执行此操作就会执行不运行 .bash_profile 的无登录 shell
@Ulukai 显然只需在 Mac 上的主目录中输入 . .bash_profile 即可完成这项工作。与 7urkm3n 上面给出的回复相同。
对于 macOS,使用 macOS v10.15 (Catalina) (2019) 将默认 shell 更改为 Z shell beginning
P
Peter Mortensen

我正在运行 macOS v10.12 (Sierra) 并为此工作了一段时间(尝试了所有推荐的解决方案)。我变得困惑,所以我最终尝试重新启动我的电脑!有效。

我的结论是,有时硬重置是必要的。


迈克是的,硬重置会起作用,因为一切都会重新加载。只要您所做的更改有效,它将在下次启动时生效。但是,您可以更轻松地挖掘一下以找到仅刷新 bash 的命令/方法,而不必一直这样做。有一种方法可以在不重新启动的情况下实现它,这当然会花费太多时间来查看最新的更改是否有效!也许看看osxdaily.com/2016/06/07/…
是的,我尝试了缩写和完整命令来重新加载 bash 配置文件/路径。它没有用,只能注销并重新登录。诡异的
t
tsujp

简单地重新采购文件不会“重新加载”,因为某些东西首先被卸载,然后再次加载。如果这是你想要的,你可以这样做:

hash -r && _SHOW_MESSAGES=1 exec -a -bash bash