如何使用zsh“command”选项执行内置的“source”命令?

如何使用zsh“command”选项执行内置的“source”命令?,zsh,Zsh,每次我的shell源文件时,我都尝试记录日志。我正在使用zsh,所以我进入zshenv并添加了这个函数 source() { echo "sourcing $1" command source $1 } 想法是,每次source[file]出现在我的一个点文件中并执行时,它都应该首先将操作打印到终端,然后再实际获取文件 相反,我得到了一些像这样的错误 sourcing /Users/js/.cargo/env source:2: command not fo

每次我的shell源文件时,我都尝试记录日志。我正在使用zsh,所以我进入zshenv并添加了这个函数

source() {
    echo "sourcing $1"
    command source $1
}
想法是,每次source[file]出现在我的一个点文件中并执行时,它都应该首先将操作打印到终端,然后再实际获取文件

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

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的正确方法是什么?

命令专门用于调用外部命令。例如,如果您有git的别名或函数,那么命令git将绕过这些别名或函数

您正在寻找内置命令,以将命令查找限制为仅内置命令

source() {
    echo "sourcing $1"
    builtin source "$1"
}
命令旨在专门调用外部命令。例如,如果您有git的别名或函数,那么命令git将绕过这些别名或函数

您正在寻找内置命令,以将命令查找限制为仅内置命令

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

为了使其在不考虑外壳的情况下工作,您可以使用以下方法:

!/副秘书长/垃圾箱/环境卫生 来源{ echo采购1美元 . $1 } 来源:1美元
为了使其在不考虑外壳的情况下工作,您可以使用以下方法:

!/副秘书长/垃圾箱/环境卫生 来源{ echo采购1美元 . $1 } 来源:1美元
很接近,但不完全是OP想要的。请注意,在zsh中,source和。行为稍有不同,因此您的源函数不仅会记录正在发生的事情,而且与内置源命令具有不同的语义。Close,但并不完全符合OP的要求。请注意,在zsh中,source和。行为稍有不同,因此您的源函数不仅会记录正在发生的事情,还具有与内置源命令不同的语义。在zsh中,命令x将x解释为外部命令。您不能使用它运行内部命令。这与bash不同。在zsh中,命令x将x解释为外部命令。您不能使用它运行内部命令。这是一个不同于bash的AFIK。