我总是想知道是否有办法做到这一点。我一直不想source
在改变后打字。.bash_profile
答案1
只需做一点工作就可以使其自动发生PROMPT_COMMAND
和-nt
带有标记文件。如果您将其放入~/.bash_profile
文件中:
touch /tmp/bash_profile-$$
resource_profile() {
[ ~/.bash_profile -nt /tmp/bash_profile-$$ ] && source ~/.bash_profile
}
PROMPT_COMMAND=resource_profile
/tmp
那么当 shell 启动时将会创建一个空的标记文件,命名为PID外壳来识别它。
每次显示提示之前,shell 都会运行该resource_profile
函数,该函数将检查自上次获取和更新标记文件以来是否~/.bash_profile
已更改 ( ),如果已更改,则会自动进行。当获取文件时,它将在下次再次更新标记文件。-nt
source ~/.bash_profile
这并不是万无一失的 - 根据文件系统的不同,可能无法检测到文件来源后不久所做的更改。仅在运行命令或按 后才会检查该文件Enter,这尽可能接近即时,但并非完全即时。
根据系统的配置文件,您可能更愿意将标记文件放在其他人无法访问该目录的其他位置。也可以构建类似的东西stat(1)
如果有的话,完全避免使用标记文件。