【问题标题】:Understanding /usr/bin/env了解 /usr/bin/env
【发布时间】:2016-03-23 19:39:28
【问题描述】:

在许多 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 解释器在哪里。

【问题讨论】:

  • 你试过手册页了吗?
  • 手册页是什么? man /usr/bin/env ?没有条目。
  • 那是因为/usr/bin/env 不是手册页。 man 1 env

标签: python bash path interpreter shebang


【解决方案1】:

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

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

顺便说一句,我也将它与 bash 脚本一起使用:/usr/bin/env bash,因为发行版不同意它的位置(/bin/bash/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 环境变量,将其拆分为 :,然后对于每个目录,尝试查找名为 @987654331 的可执行文件@。启动第一个匹配的可执行文件。

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

【讨论】:

  • yes running /usr/bin/env python 运行 python 解释器。事情是通过运行/usr/bin/env 我得到一个路径变量列表。不知道为什么会有变量,为什么python解释器的位置不在其中。
  • /usr/bin/env 显示您的环境变量当前在您的 shell 中处于活动状态。当将 python 作为参数传递时,它会在您的 PATH 中查找,如果在某个目录中有一个名为 python 的可执行文件,那么它将运行它。
猜你喜欢
  • 2014-05-05
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2016-11-23
相关资源
最近更新 更多