答案1
设置为#!/bin/sh
将直接转到该文件/bin/sh
。
设置为#!/usr/bin/env sh
将使用/usr/bin/env
参数执行sh
。这将导致脚本通过sh
in变量执行, PATH
而不是通过 显式执行/bin/sh
。
答案2
许多其他帖子(例如接受的答案这个)提到,bin/sh
在 Solaris 系统(10 或更早版本)中,它不是 POSIX 兼容的 shell,而是位于/usr/xpg4/bin/sh
.
在这种情况下,#!/bin/sh
如果它符合 POSIX 标准,则可能无法正常工作。但是,我怀疑#!/usr/bin/env sh
是否会指向所需的外壳。