[Linux] 看 pip 的启动脚本看得我人都傻了,还能把 shell 和 py 揉到一起写

/usr/bin/pip3.10

#!/bin/sh "exec" "$(dirname $0)/python3.10" "$0" "$@"
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(main())

个人理解是,上述脚本通过 exec ,用指定位置的 python 直接替换掉了当前的 shell 进程,那么为什么 "exec" "$(dirname $0)/python3.10" "$0" "$@" 之后的代码还能接着执行呢?

以及,为什么要这样写呢,拆开写不好吗?

发表评论

您的电子邮箱地址不会被公开。