如何从命令行重新加载.bash_profile?我可以让shell通过退出并重新登录来识别对.bash_profile的更改,但我希望能够按需执行。
只需键入source ~/.bash_profile
或者,如果您想保存击键,可以键入. ~/.bash_profile。
- 埃多克斯1〔0〕怎么样。如果经常这样做,您可以将其命名为br。
- 我为什么每次都需要这样做?我无法使对.bash_配置文件所做的更改保持不变,即使当我在编辑器中打开它时,它们就在文件中。令人困惑的。
- @Erwinheiser您的系统正在加载文件吗?有些系统使用其他文件,如~/.bashrc。
- 如果你想知道负载是否出了问题,你可以使用:alias reload='source ~/.bash_profile && echo"File .bash_profile reloaded correctly" || echo"Syntax error, could not import the file"';。
只需确保您不依赖于其中的当前状态。
- 为什么会这样?在这种情况下,.命令是什么?
- dot操作符:.只是source命令的别名。
- @严格地说,我认为这是另一条路;.比source老。
- source是.的bash特定实现。
- 那么,. 是别名还是source是特定的实现?
- @stass-.和source在bash中是完全相同的。从链接中:"source是bash中dot/period‘.’的同义词,而不是posix sh中的同义词,因此为了最大程度地兼容,请使用period。"
- 这种方法不能保证工作或干净,因为.bash_配置文件不能保证是等幂的。对于更清洁的方法,那么您真的想要启动一个新的bash过程。
简单类型:
但是,如果您希望源代码在终端启动时自动运行,而不是每次打开终端时都运行它,则可以将. ~/.bash_profile添加到~/.bashrc文件中。
注:
当您打开终端时,终端以(非登录)交互模式启动bash,这意味着它将源于~/.bashrc。
~/.bash_profile只有在交互登录模式下启动时才由bash提供源代码。这通常只有在您登录控制台(ctrl+alt+f1..f6)或通过ssh连接时才会发生。
您还可以使用此命令为该用户重新加载~/.bash_配置文件。一定要用破折号。
- 这将调用一个外壳内的整个外壳,远离理想。其他选项只是重新执行相关的文件,这意味着它们(a)实际上与所问的问题相关,(b)不堆积外壳,可能重新加载其他不应该的内容(env vars等)。有适当的方法可以完全取代当前的shell(不嵌套),但由于这不是主题,所以我会让感兴趣的读者在其他地方搜索。
- 您正在打开另一个shell,这不是重新加载,您可以打开一个新的终端或重新登录。
保存.bash_配置文件
通过键入cd转到用户的主目录
用. .bash_profile重新加载配置文件
- 和cd一起回家。不需要~。
- 不需要cd—您可以从当前所在的目录重新加载:. ~/.bash_profile。
- 在教学上,不使用~/是正确的。:)
我喜欢这样一个事实,即在您刚刚编辑了文件之后,您所需要做的就是键入:
这是您在历史记录中编辑的文件的来源。看看巴什中的巨无霸是什么。
如果您不介意丢失当前shell终端的历史记录,也可以这样做
bash -l
这将叉起你的壳,打开另一个bash子进程。-l参数告诉bash作为登录shell运行,这是必需的,因为.bash_profile不会作为非登录shell运行,有关此的详细信息,请阅读此处
如果要完全替换当前shell,还可以执行以下操作:
exec bash -l
上面的内容不会分叉您当前的shell,而是完全替换它,所以当您键入exit时,它将完全终止,而不是将您放到前一个shell。
你只需要输入EDOCX1[1]
请参阅:https://superuser.com/questions/46139/what-do-source-do
将alias bashs="source ~/.bash_profile"添加到bash文件中。所以下次打电话给bashs。
- 我把它称为reset,更容易记住
- bash中已经有一个重置命令。
我想发布一个快速的答案,当使用source ~/.bash_profile或上面提到的答案时,有一件事要提到的是,这只会在您正在查看的当前选项卡或会话中重新加载您的bash配置文件。如果希望在每个选项卡/shell上重新加载bash概要文件,则需要在每个选项卡/shell中手动输入此命令。
如果使用iterm,可以使用cmd?+shift+i,在所有当前选项卡中输入命令。对于终端来说,参考这个问题可能很有用;
如果.bash_配置文件不存在,可以尝试运行以下命令:
或
而不是.bash_配置文件。您可以找到关于bashrc的更多信息
1
| alias reload!=". ~/.bash_profile" |
或者如果想通过函数添加日志
1 2 3 4 5
| function reload! () {
echo"Reloading bash profile...!"
source ~/.bash_profile
echo"Reloaded!!!"
} |
- 我们真的需要一个函数来执行单行命令吗?
- 不,这取决于你的喜好。如果要添加一些显示状态的额外打印行,也不要简单地执行. ~/. bash_profile 或source ~/.bash_profile。
我使用debian,只需输入exec bash就可以实现这一点。我不能说它是否适用于所有其他发行版。
- 这在Mac中不起作用(至少在我使用的版本-Sierra中不起作用),因为这样做只会执行一个不运行.bash_配置文件的不登录shell。
- @很明显,ulukai只需在Mac的主目录中输入. .bash_profile就可以完成这项工作。与上述7urkm3n答复相同。
我正在运行Sierra,并为此工作了一段时间(尝试所有推荐的解决方案)。我很困惑,所以最终尝试重新启动我的电脑!它起作用了
我的结论是有时需要硬复位
- 迈克:是的,一个硬重置会起作用,因为所有的东西都会被重新加载。只要您所做的更改是正常的,它就会在下次启动时生效。不过,您可以更轻松地四处挖掘,找到命令/方法来刷新bash,而不必一直这样做。有一种方法可以在不重新启动的情况下实现它,这当然会占用太多的时间来查看最新的更改是否有效!或许可以看看osxdaily.com/2016/06/07/…
- 是的,我尝试了缩写和完整命令来重新加载bash概要文件/路径。它不起作用,只是注销和重新登录起作用。奇怪的