我经常发现自己意外地将 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
每次都使用来解决。