执行文件之前 zsh 发出警告

执行文件之前 zsh 发出警告

我经常发现自己意外地将 Python 文件作为 Shell 脚本运行,例如$ ./test.py

如果文件开头没有 shebang 行,则可能会造成很大的损害,因此我希望 zsh 能够对这种行为发出警告。

这个功能是否已经存在于某个地方?

如果没有,我正在考虑使用accept-line它来实现这一点,但这似乎是一个万能的解决方案,有没有更具体的方法?

答案1

您可以使用后缀别名来确保.py文件由python运行:

alias -s py='/usr/bin/env python'

当您在命令行中输入以 结尾的命令时.py,它将以 运行/usr/bin/env python

注意:这并不关心文件是否可执行。如果要将其限制为可执行.py文件,可以使用以下函数:

runxpy () {
    if [[ -x "$1" ]] ; then
        /usr/bin/env python "$@"
    else
        "$@"
    fi
}
alias -s py=runxpy

当然,一个限制是相关文件必须有后缀.py。另一个限制是任何现有的#!行都会被忽略,但这可以通过扩展runxpy以解析第一行而不是/usr/bin/python每次都使用来解决。

相关内容