推荐的POSIX SH Shebang是什么? [英] What is the recommended POSIX sh shebang
本文介绍了推荐的POSIX SH Shebang是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我读到如果您想以可移植的方式使用Bash,您应该使用shebang:
#!/usr/bin/env bash
但现在我在想:当我想明确声明我不依赖于Bash,而是编写了一个符合POSIX的脚本时,我是否应该使用:
#!/bin/sh
还是#!/usr/bin/env sh
在这里也更可取?
推荐答案
形式透视
POSIXrel="noreferrer">POSIX规范的信息性部分,
sh:应用程序使用情况状态
您不能依赖安装在/bin/sh
的sh
可执行文件。
但是,不建议使用应用程序应注意,shell的标准路径不能 假定为/bin/sh或/usr/bin/sh,,应为 由查询由返回的路径确定 getconf 路径,确保返回的路径名是绝对路径名,而不是 内置外壳。
例如,要确定标准sh实用程序的位置:
command -v sh
env
来使用适当的路径,
它建议在安装时修改shell脚本以使用
sh
的完整路径:
此外,在支持可执行脚本的系统上("<[2-7]")
构造),建议使用可执行脚本的应用程序
使用以下工具安装它们
getconf
路径确定shell路径名并更新"#!
"脚本
在安装时适当(例如,使用
sed)。
实践中
我主要编写POSIX shell脚本,实际上,每个GNU/Linux系统 (基于Red Hat和Debian)-以及Cygwin和OS X等其他产品-有 符合sh
的sh
可以安装到/bin/sh
,也可以作为软件或
此路径上的硬链接。我从来不需要使用env
来满足系统需求
其中sh
不使用此路径。
某些Unix系统可能无法使用符合POSIX的sh
AS/bin/sh
。POSIX规范建议将其安装在
有些系统如/usr/xpg4/bin/sh
。据我所知,这是(曾经?)真的
对于Solaris系统,其中/bin/sh
是Bourne shell的早期版本
它比POSIX更早。在这种情况下,使用env sh
不一定有帮助,因为它仍然可以在/usr/xpg4/bin/sh
处的POSIX shell之前找到Bourne shell(位于/bin/sh
)。
摘要
如果您正在为常见的Unix和Linux操作编写POSIX shell脚本 系统,只需使用#!/bin/sh
作为封套。
在极少数情况下,/bin/sh
是Bourne shell而不是符合POSIX的
shell,则必须修改shebang以使用适当的完整路径。
到POSIX外壳。
在任何一种情况下,使用都没有好处-而且
与简单使用#!/bin/sh
相比,更有可能失败。
这篇关于推荐的POSIX SH Shebang是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文