在所有打开的终端中获取新的 .bashrc

在所有打开的终端中获取新的 .bashrc

我发现自己总是同时打开多个终端。当我更新我的.bashrc,我必须去每个终端并执行

. .bashrc

使用新的.bashrc

这有点麻烦,也耗时。我想知道是否有办法使用新的.bashrc文件而不用逐个查看或注销并重新开始?

答案1

terdon 的方法在适当的情况下效果很好,但如果,例如,.bashrc附加到小路变量,它会很快导致错误。

您可以先检查文件的修改时间,然后将其与上次获取的版本的 mtime 进行比较,而不是简单地提供文件资源。

为此,请将其附加到~/.bashrc

  • Linux

    bashrc_sourced=$(stat -c %Y ~/.bashrc)
    
    PROMPT_COMMAND='
        test $(stat -c %Y ~/.bashrc) -ne $bashrc_sourced && source ~/.bashrc
    '
    
  • OS X和BSD

    bashrc_sourced=$(stat -f %m ~/.bashrc)
    
    PROMPT_COMMAND='
        test $(stat -f %m ~/.bashrc) -ne $bashrc_sourced && source ~/.bashrc
    '
    

然后最后一次手动提供资源。

答案2

一般来说,请记住包含您的操作系统,正确答案通常取决于系统。请记住,大多数 Linux、OS X 和许多 UNIX 都默认使用 bash。

无论如何,在你的情况下,操作系统应该是无关紧要的,所以你需要做的是设置PROMPT_COMMAND多变的:

Bash 提供了一个名为 PROMPT_COMMAND 的环境变量。在 Bash 显示提示符之前,此变量的内容将作为常规 Bash 命令执行。

因此,由于您要运行的命令是 sourcing ~/.bashrc,请将此行添加到您的~/.bashrc.只是 的别名source):

PROMPT_COMMAND='source ~/.bashrc'

现在,每次 Bash 显示提示符时,它都会首先重新读取~/.bashrc。要获取打开的终端(只要它们已经打开您设置PROMPT_COMMAND)进行更新只需运行任何命令或简单点击Enter

警告:根据您的复杂程度~/.bashrc,这可能会增加明显的滞后,因为文件中的任何命令都将被重复执行。

答案3

将其中一个或两个放入/etc/配置文件~/.bashrc

alias sProf='source /etc/profile'
alias sBrc='source ~/.bashrc'

另一种方法:

复制一个终端行,包括箭头之间的所有内容,包括命令和换行符,然后单击鼠标中键将其放入每个终端中。

  <---------------------------->
$ source ~/.bashrc             | terminal border

相关内容