了解/ usr / bin / env

时间:2015-12-17 10:57:21

标签: python bash path interpreter shebang

在许多python脚本中,我是否阅读了shebang指令#!/usr/bin/env python 我理解它会告诉使用哪个解释器,比如bash脚本:#!/bin/bash,但我不明白如何指定python解释器。如果我只是运行

$ /usr/bin/env

我得到一个可变路径列表,例如SHELL=/bin/bashJAVA_HOME==/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

运行此命令时,没有关于python的信息。所以我想更好地理解/usr/bin/env究竟做了什么,以及#!/usr/bin/env python告诉我当前python解释器的位置。

1 个答案:

答案 0 :(得分:2)

尝试运行/usr/bin/env python,看看会发生什么。

当给出参数时,env运行它找到的可执行文件。

BTW我也将它与bash脚本一起使用:/usr/bin/env bash因为发行版不同意它的位置(/bin/bash vs /usr/bin/bash

另请参阅:https://unix.stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my

编辑 - 额外解释:

当给出论证时,例如pythonenv的行为与任何shell在尝试查找可执行文件时的行为完全相同:查看PATH环境变量,将其拆分为:,并为每个目录,尝试查找名为python的可执行文件。第一个匹配的可执行文件已启动。

PATH变量的典型内容:/bin:/usr/bin:/usr/local/bin