在许多python脚本中,我是否阅读了shebang指令#!/usr/bin/env python
我理解它会告诉使用哪个解释器,比如bash脚本:#!/bin/bash
,但我不明白如何指定python解释器。如果我只是运行
$ /usr/bin/env
我得到一个可变路径列表,例如SHELL=/bin/bash
或JAVA_HOME==/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
。
运行此命令时,没有关于python的信息。所以我想更好地理解/usr/bin/env
究竟做了什么,以及#!/usr/bin/env python
告诉我当前python解释器的位置。
答案 0 :(得分:2)
尝试运行/usr/bin/env python
,看看会发生什么。
当给出参数时,env
运行它找到的可执行文件。
BTW我也将它与bash脚本一起使用:/usr/bin/env bash
因为发行版不同意它的位置(/bin/bash
vs /usr/bin/bash
)
编辑 - 额外解释:
当给出论证时,例如python
,env
的行为与任何shell在尝试查找可执行文件时的行为完全相同:查看PATH
环境变量,将其拆分为:
,并为每个目录,尝试查找名为python
的可执行文件。第一个匹配的可执行文件已启动。
PATH
变量的典型内容:/bin:/usr/bin:/usr/local/bin