首页 > 解决方案 > 如何使用 zsh 'command' 选项来执行内置的 'source' 命令?

问题描述

每次我的 shell 获取文件时,我都在尝试记录。我正在使用zsh,所以我进入zshenv并添加了这个功能。

source() {
    echo "sourcing $1"
    command source $1
}

这个想法是每次“源[文件]”出现在我的一个点文件中并被执行时,它应该首先将操作打印到终端,然后再实际获取文件。

相反,我遇到了一些这样的错误

sourcing /Users/js/.cargo/env
source:2: command not found: source
sourcing /Users/js/.sources/postgres-env.sh
source:2: command not found: source
sourcing /Users/js/.oh-my-zsh/oh-my-zsh.sh
source:2: command not found: source
sourcing /Users/js/.iterm2_shell_integration.zsh
source:2: command not found: source

在这里使用带有 zsh 的 shell 'command' 选项调用 source 的正确方法是什么?

标签: zsh

解决方案


command旨在专门调用外部命令。例如,如果您有 的别名或函数gitcommand git将绕过这些。

您正在寻找将builtin命令查找限制为仅内置命令的命令。

source() {
    echo "sourcing $1"
    builtin source "$1"
}

推荐阅读