我发现自己总是同时打开多个终端。当我更新我的.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