更改后.bash_profile可以自动获取吗?

更改后.bash_profile可以自动获取吗?

我总是想知道是否有办法做到这一点。我一直不想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已更改 ( ),如果已更改,则会自动进行。当获取文件时,它将在下次再次更新标记文件。-ntsource ~/.bash_profile

这并不是万无一失的 - 根据文件系统的不同,可能无法检测到文件来源后不久所做的更改。仅在运行命令或按 后才会检查该文件Enter,这尽可能接近即时,但并非完全即时。

根据系统的配置文件,您可能更愿意将标记文件放在其他人无法访问该目录的其他位置。也可以构建类似的东西stat(1)如果有的话,完全避免使用标记文件。

相关内容