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

mar*_*son 920 bash shell .bash-profile

如何.bash_profile从命令行重新加载?我可以让shell .bash_profile通过退出并重新登录来识别更改,但我希望能够按需执行此操作.

Sie*_*geX 1743

只需输入 source ~/.bash_profile

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

  • 怎么样`alias BASHRELOAD =".〜/ .bash_profile"`.如果你经常这样做,你可以将它别名为"br". (42认同)
  • @erwinheiser是你的系统加载文件?有些系统使用其他文件,例如〜/ .bashrc. (3认同)
  • 对于那些忘记您已切换到 OhMyZsh 的人。运行 open ~/.zshrc 并在那里进行更改,而不是您的 .bash_profile (3认同)
  • 如果您想知道加载时是否出现问题,您可以使用:`alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded right" || echo "语法错误,无法导入文件"';` (2认同)

Car*_*rum 98

. ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

只需确保您对当前状态没有任何依赖关系.

  • 为什么这样做?即,在这种情况下,`.`命令是什么? (13认同)
  • @GrahamPHeath - 严格来说,我认为这是相反的方式; `.`比`source`旧. (8认同)
  • [点运算符:`.`](http://ss64.com/bash/source.html)只是`source`命令的别名. (7认同)
  • @StasS - `.`和`source`在bash中完全相同.从链接:"`source`是bash中dot/period'`.`'的同义词,但在POSIX sh中没有,所以为了获得最大兼容性,请使用句点." (7认同)
  • `source`是`.`的bash特定实现 (4认同)

Moh*_*ini 30

只需输入:

. ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

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

注意:

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

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


小智 15

您也可以使用此命令为该用户重新加载〜/ .bash_profile.确保使用短划线.

su - username
Run Code Online (Sandbox Code Playgroud)

  • 这将调用shell中的整个shell,远非理想.其他选项只是重新执行相关文件,这意味着它们(A)实际上与问题相关,并且(B)没有堆积shell并且可能重新加载其他不应该的东西(env vars等).有_are_正确的方法来直接替换当前的shell(没有嵌套),但由于那是偏离主题的,我会让感兴趣的读者去其他地方搜索. (5认同)
  • 你正在打开另一个shell,这不是重装你也可以打开一个新的终端或重新登录 (3认同)

小智 15

我喜欢这样的事实:在您刚编辑完文件后,您需要做的就是键入:

. !$
Run Code Online (Sandbox Code Playgroud)

这会获取您刚刚在历史记录中编辑的文件.请参阅bash中的什么是爆炸美元.


Jen*_*ada 15

您只需要输入. ~/.bash_profile.

请参阅“源”有什么作用?


Mit*_*tri 11

  1. 保存.bash_profile文件
  2. 通过键入转到用户的主目录 cd
  3. 重新加载配置文件 . .bash_profile

  • 用`cd`回家吧.不需要`~`. (8认同)
  • 不需要`cd` - 你可以从你当前所在的目录重新加载它:`.〜/ .bash_profile` (7认同)

Eze*_*one 8

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

. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

或者

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

而不是.bash_profile

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


Ulu*_*kai 7

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

bash -l

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

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

exec bash -l

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