use*_*571 4 bash monitoring configuration
每次编辑 bashrc 文件并保存时,是否可以自动运行“source .bashrc”?
正如另一个答案所指出的那样,一种方法是创建一个函数,用一个两步过程替换您对 .bashrc 的编辑器调用
如:
vibashrc() { vi $HOME/.bashrc; source $HOME/.bashrc; }
Run Code Online (Sandbox Code Playgroud)
这有一些缺点:
vibashrc
每次你想要采购发生时都打字另一个选择是,只要看到 .bashrc 文件已更新(并且就在显示下一个提示之前),就挂钩到 bash 的PROMPT_COMMAND功能以在任何/所有 bash shell 中获取 .bashrc 的源。
您可以将以下代码添加到 .bashrc 文件中(或使用它扩展任何现有的 PROMPT_COMMAND 功能):
prompt_command() {
# initialize the timestamp, if it isn't already
_bashrc_timestamp=${_bashrc_timestamp:-$(stat -c %Y "$HOME/.bashrc")}
# if it's been modified, test and load it
if [[ $(stat -c %Y "$HOME/.bashrc") -gt $_bashrc_timestamp ]]
then
# only load it if `-n` succeeds ...
if $BASH -n "$HOME/.bashrc" >& /dev/null
then
source "$HOME/.bashrc"
else
printf "Error in $HOME/.bashrc; not sourcing it\n" >&2
fi
# ... but update the timestamp regardless
_bashrc_timestamp=$(stat -c %Y "$HOME/.bashrc")
fi
}
PROMPT_COMMAND='prompt_command'
Run Code Online (Sandbox Code Playgroud)
然后,下次登录时,bash 会加载这个函数和提示钩子,每次即将显示提示时,它会检查 $HOME/.bashrc 是否已更新。如果有,它会快速检查语法错误(set -n
选项),如果文件是干净的,源它。
无论语法检查如何,它都会更新内部时间戳变量,以便在文件再次保存/更新之前不会尝试加载它。
归档时间: |
|
查看次数: |
21209 次 |
最近记录: |