打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
#!/usr/bin/env python 有什么用?

我们经常会在别人的脚本或者项目的入口文件里看到第一行是下面这样

#!/usr/bin/python

或者这样

#!/usr/bin/env python

那么他们有什么用呢?

要理解它,得把这一行语句拆成两部分。

第一部分是 #!

第二部分是 /usr/bin/python 或者 /usr/bin/env python

关于 #! 这个符号,其实它是有名字的,叫做 Shebang 或者Sha-bang ,有的翻译组将它译作 释伴,即“解释伴随行”的简称,同时又是Shebang的音译。

Shebang通常出现在类Unix系统的脚本中第一行,作为前两个字符。在Shebang之后,可以有一个或数个空白字符,后接解释器的绝对路径,用于指明执行这个脚本文件的解释器。

那么加和不加有什么区别呢?

如果不加 #! 的话,你每次执行这个脚本时,都得这样 python xx.py

有没有一种方式?可以省去每次都加 python 呢?

当然有,你可以文件头里加上#!/usr/bin/python ,那么当这个文件有可执行权限 时,只直接写这个脚本文件,就像下面这样。

明白了这个后,再来看看 !/usr/bin/env python 这个 又是什么意思 ?

当我执行 env python 时,自动进入了 python console 的模式。

这是为什么?和 直接执行 python 好像没什么区别呀

当你执行 env python 时,它其实会去 env | grep PATH 里(也就是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin )这几个路径里去依次查找名为python的可执行文件。

找到一个就直接执行,上面我们的 python 路径是在 /usr/bin/python 里,在 PATH 列表里倒数第二个目录下,所以当我在 /usr/local/sbin 下创建一个名字也为 python 的可执行文件时,就会执行 /usr/bin/python 了。

具体演示过程,你可以看下面。

那么对于这两者,我们应该使用哪个呢?

个人感觉应该优先使用 #!/usr/bin/env python,因为不是所有的机器的 python 解释器都是 /usr/bin/python

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在 Python 脚本的第一行使用 #!/usr/bin/env 有什么作用
编写Shell脚本的最佳实践
浅谈脚本首行井!/usr/bin/env python与井!/usr/bin/python区别
#!/usr/bin/python3
#!/usr/bin/python语句与#!/usr/bin/env语句设置运行环境
linux py文件解释器路径设置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服