![使用“env [shell]”作为解释器的目的是什么?](https://linux22.com/image/12100/%E4%BD%BF%E7%94%A8%E2%80%9Cenv%20%5Bshell%5D%E2%80%9D%E4%BD%9C%E4%B8%BA%E8%A7%A3%E9%87%8A%E5%99%A8%E7%9A%84%E7%9B%AE%E7%9A%84%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%20.png)
我已经被绊倒过#!/usr/bin/env bash
很多次了,但从来没有质疑过。现在,我想知道将 shell 解释器包装在命令中的目的是什么env
,即为什么不直接 write#!/bin/bash
或#!/bin/sh
其他什么?
答案1
我认为这是因为Python而流行的。
有了这个你可以做
#!/usr/bin/env python3
例如,并且非常确定env
会找到可执行文件的正确版本和位置。
然后这会迁移到其他 shell,因为即使您知道特定 shell 在哪里,这似乎也是一个始终这样做的好习惯。