linux -/usr/bin/env 在 Linux shebang 行中如何工作?

标签 linux environment-variables shebang

我知道这样的 shebang 行:

#!/bin/sh

但我发现我也可以像这样使用 shebang 行:

#!/usr/bin/env python3

这让我很困惑,有人可以向我解释一下 Linux 将如何处理这个吗?

最佳答案

env 是 Unix 程序的名称。如果您阅读手册 (man env),您可以看到使用它的一种方法是 env COMMAND,在您的情况下,COMMANDpython3.

根据手册,这将

Set each NAME to VALUE in the environment and run COMMAND.

单独运行 env 将显示设置的 NAME 和 VALUE:

$ env
TERM=xterm-256color
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
…

因此,/usr/bin/env python3 是设置PATH(以及所有其他 NAME+VALUE 对)的指令,然后运行 ​​python3,使用 PATH 中包含 python3 可执行文件的第一个目录。

关于linux -/usr/bin/env 在 Linux shebang 行中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43793040/

相关文章:

mysql - 我安装了 MariaDB,它搞砸了 Mysql,我也无法卸载

linux - 制作一个程序,接受用户输入数字 1-7,然后根据用户选择的数字显示命令。 [ bash -CentOS]

linux - 如何从 tar 文件内的 csv 文件中提取前几行而不在 Linux 中提取它?

linux - "#!/usr/bin/env bash"和 "#!/usr/bin/bash"有什么区别?

c - 我对 read() 和 write() 做错了什么?

azure 以编程方式设置环境变量以禁用 azure 功能

javascript - 从开发环境切换到生产环境时使用grun切换HTML元素

amazon-web-services - AWS Lambda@Edge Nodejs "Environment variables are not supported."

python - shebang 无法在 WSL(Windows 子系统 Linux)上工作

node.js - 如何使用 ssh 远程运行(shebang 前缀) Node 脚本?