加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

zsh – 在不关闭shell窗口的情况下自动重新加载别名

发布时间:2020-12-13 23:51:26 所属栏目:Linux 来源:网络整理
导读:我的别名存储在?/ .zsh_aliases中,并且源自?/ .zshrc: # Access custom aliases in the shell[ -e "${HOME}/.zsh_aliases" ] source "${HOME}/.zsh_aliases" 但是,在更改别名的名称时,我必须始终关闭当前的shell窗口并打开一个新窗口以使更改变为活动状态.
我的别名存储在?/ .zsh_aliases中,并且源自?/ .zshrc:

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

但是,在更改别名的名称时,我必须始终关闭当前的shell窗口并打开一个新窗口以使更改变为活动状态.

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

解决方法

您实际上并不需要关闭并重新打开终端,只需运行source~ / .zsh_aliases(加载新的和更改的别名)或者exec zsh(用新的替换当前的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键才能使更改生效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读