前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >!/usr/bin/python与#!/usr/bin/env python的区别

!/usr/bin/python与#!/usr/bin/env python的区别

作者头像
石晓文
发布2020-04-14 12:32:00
1.1K0
发布2020-04-14 12:32:00
举报
文章被收录于专栏:小小挖掘机

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

代码语言:javascript
复制
#!/usr/bin/python

或者这样

代码语言:javascript
复制
#!/usr/bin/env python

这两者有什么区别呢?

稍微接触过 linux 的人都知道 /usr/bin/python 就是我们执行 python 进入console 模式里的 python

而当你在可执行文件头里使用 #! + /usr/bin/python ,意思就是说你得用哪个软件 (python)来执行这个文件。

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

不加的话,你每次执行这个脚本时,都得这样: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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档