我有一个问题。
可以编写不依赖于ARCH和OS的shell脚本。 我想制作一个在hpUnix,linux,soalris和spark中运行的通用shell脚本。
我使用哪个shell?在我的情况下。
请帮帮我。
PS)感谢您阅读我的问题。
答案 0 :(得分:0)
阅读此http://homepage.smc.edu/morgan_david/linadmin/labs/primitiveshells/primitive-shells.htm
虽然是计算机科学中最基本的操作系统,但是在其40多年的UNIX开发中已经分裂并分支成千种变体
在这个移动统一的伞下,贝壳,它们也是 各种各样和变化。您将遇到的主要外壳是:
源自
的Korn shell(ksh及其派生词mksh和pdksh) AT& T营地C shell(csh及其派生的tcsh)起源 在伯克利来自GNU项目的Bourne再次shell(bash),以及 其他各种努力,如
来自普林斯顿的Z shell(zsh) 大学生,和Almquist贝壳(灰)和衍生的Debian Almquist shell(破折号)。
这些都是共同的基本壳,但绝不是彼此相同的,绝不是表现相同的。事实上,功能变化是各个开发分支的确切历史原因。行为差异是我们有一系列shell的原因,这就是为什么shell的行为不完全相同的原因。不要指望他们。如果命令shell的这种比较是地图,那么你可以清楚地看到它们遍布地图。命令shell类别中的程序与Web浏览器类别中的程序(如Mosaic,Opera,Safari,Firefox,Chrome)类似且不同,更为熟悉。
答案 1 :(得分:0)
因此,适用于多平台任务的正确工具将在所有方面运行,例如java。使用这样的解决方案是写一次的唯一方法。
您可以编写一个shell脚本来执行上述操作,但您很快就会想要支持每个ARCH / OS的if / else链,这需要进行更复杂的测试。
然后,您可以编写一个安装脚本来解压您的jar,并安装一个简单的脚本来调用您的复杂java。很多关于如何制作可执行jar的例子都是关于互联网的。
祝你好运。答案 2 :(得分:0)
这个问题:
#!/bin/sh vs #!/bin/bash for maximum portability
When must I use #!/bin/bash and when #!/bin/sh?
可以为您提供更多详细信息,说明为什么首选使用#! / bin / sh的强>
总结一些观点:
有几个shell实现了POSIX sh规范的超集。在不同的系统上, / bin / sh 可能是ash,bash,dash,ksh,zsh和c的链接。 (它总是与sh兼容 - 从不csh或fish。)
只要你坚持sh功能,你就可以(甚至可能)使用#!/ bin / sh ,脚本应该可以正常运行,无论它是哪个shell是。 https://superuser.com/a/1133205/284722
您应该只编写适用于shell语言的任何实现的shell脚本(包括所有"实用程序"与shell本身一起使用的程序)。这些天你可以把POSIX.1-2001(而不是-2008)作为shell和实用程序能力的权威,但要注意有一天你可能需要将脚本移植到遗留系统(例如Solaris)或者AIX)其shell和实用程序大约在1992年被冻结。https://superuser.com/a/1134898/284722
最便携:使用#!/ bin / sh shebang并仅使用POSIX标准中指定的基本shell语法。这应该适用于任何POSIX / unix / linux系统。 (好吧,除了具有真正遗留Bourne shell的Solaris 10和更早版本之前,将POSIX置于不合规之前,如/ bin / sh。)https://serverfault.com/a/865880/94862