每次我的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
在这里使用shell"command"选项和zsh调用source的正确方法是什么?
command
旨在专门调用外部命令。例如,如果您有git
的别名或函数,command git
将绕过这些别名或函数。
您正在寻找builtin
命令,以将命令查找限制为仅内置命令。
source() {
echo "sourcing $1"
builtin source "$1"
}
为了让它在不考虑shell的情况下工作,您可以使用以下内容:
#!/usr/bin/env sh
source() {
echo "sourcing $1"
. "$1"
}
source "$1"