#!/usr/bin/env foo #!vs /usr/bin/foo

#!/usr/bin/env foo #!vs /usr/bin/foo

对于运行 bash、python 等脚本,上述哪种形式“更好”?为什么我不能这样做#!$(which foo)?是否有必要指定完整路径env?我收集自答案是,所有 *nix-es 的路径/usr/bin/env都是一成不变的,远不止于/usr/bin/python3例如。是这样吗?

答案1

你不能直接写,#!$(which foo)因为该行是由内核解释的,它不理解像$().

内核不会在PATH环境变量中搜索该命令。这就是为什么您必须指定命令的完整路径。

使用/usr/bin/env是一种巧妙的技巧,用于在PATH.即使有/usr/bin/python3程序,您也可能在不同的路径(例如您的主目录)中安装了更新版本的 Python。

相关内容