对于运行 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。