#!/usr/bin/python与#!/usr/bin/env python的区别
!/usr/bin/python与#!/usr/bin/env python的区别
我们经常会在别人的脚本或者项目的入口文件里看到第一行是下面这样
#!/usr/bin/python
或者这样
#!/usr/bin/env python
这两者有什么区别呢?
前一个很好理解,就是在执行这个脚本的时候用/usr/bin下python命令去执行。
那#!/usr/bin/env python 这个是什么意思 ?
当我执行 env python 时,自动进入了 python console 的模式。
这是为什么呢?这样做和直接执行 python 好像没什么区别。
查阅man env命令可以看到,env的作用是列出所有的环境变量。
ENV(1) User Commands ENV(1)
NAME
env - run a program in a modified environment
SYNOPSIS
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
DESCRIPTION
Set each NAME to VALUE in the environment and run COMMAND. # 将name=value设置给环境,然后在环境中执行command。换句话说,env命令为command的执行准备了一个执行环境
Mandatory arguments to long options are mandatory for short options too.
-i, --ignore-environment
start with an empty environment
-0, --null
end each output line with 0 byte rather than newline
-u, --unset=NAME
remove variable from the environment
--help display this help and exit
--version
output version information and exit
A mere - implies -i. If no COMMAND, print the resulting environment.
env python就是给python命令指定一个执行环境,这个执行环境是由env命令列出的环境变量组成的。
当你执行 env python 时,它其实会去 env | grep PATH 里(也就是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin )这几个路径里去依次查找名为python的可执行文件。
找到一个就直接执行,上面我们的 python 路径是在 /usr/bin/python 里。
那么对于这两者,我们应该使用哪个呢?
一般而言,应该优先使用 #!/usr/bin/env python,因为不是所有的机器的 python 解释器都在 /usr/bin/python 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通