gpt4 book ai didi

zsh - 更改时自动重新加载别名,无需关闭 shell 窗口

转载 作者:行者123 更新时间:2023-12-02 15:18:29 31 4
gpt4 key购买 nike

我的别名存储在 ~/.zsh_aliases 中,并源自 ~/.zshrc:

# Access custom aliases in the shell
[ -e "${HOME}/.zsh_aliases" ] && source "${HOME}/.zsh_aliases"

但是,在更改别名时,我必须始终关闭当前的 shell 窗口并打开一个新窗 Eloquent 能使更改生效。

Zsh 是否可以在更改时自动重新加载别名以使其可用,而无需关闭 shell 窗口?

最佳答案

您实际上不需要为此关闭并重新打开终端,只需运行 source ~/.zsh_aliases (加载新的和更改的别名)或者exec zsh (用新的 shell 替换当前的 shell)也可以。

如果您确实想在修改 ~/.zsh_aliases 时重新获取它的源代码,我建议将以下内容添加到您的 ~/.zshrc 中:

# File containing aliases; 
ALIAS_FILE="${HOME}/.zsh_aliases

reload_aliases () {
# do nothing if there is no $ALIAS_FILE
[[ -e ALIAS_FILE ]] || return 1
# check if $ALIAS_FILE has been modified since last reload
# the modifier `(:A)` resolves any symbolic links
if [[ $LAST_ALIAS_RELOAD < $(stat -c %Y ${ALIAS_FILE}(:A)) ]]; then
# remove all aliases; optional!
# only do this if all of your aliases are defined in $ALIAS_FILE
# also affects aliases defined on the command line
unalias -m '*'
# load aliases
source $ALIAS_FILE
# update date of last reload
LAST_ALIAS_RELOAD=$(date +%s)
fi
}

# make reload_aliases to be run before each prompt
autoload -Uz add-zsh-hook
add-zsh-hook precmd reload_aliases

请注意,任何更改仅在新提示符下可用。这意味着,如果您修改 ~/.zsh_aliases,您需要在所有终端中至少按一次 Enter 才能使更改生效。

关于zsh - 更改时自动重新加载别名,无需关闭 shell 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046975/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com