我写的大多数代码都在PHP中。我最近开始学习Shell脚本。我遇到的大多数资源和教程都是针对Bash的。有些警告关于洗礼,有些则没有。我在这里和Stack Overflow上已经读了很多东西。
每当答案使用Bashisms时,不可避免地会有人评论说:
您不应该使用<在此处插入bashism>。它不是便携式的。
即使将问题标记为,也会发生这种情况bash。对我来说,这就像告诉一个PHP程序员,他们不应该使用PHP 5中的新代码,因为它不能与PHP 4一起使用。或者告诉某人,他们不应该为Mac写一些东西,因为它不能被使用。在Windows上。
当我用PHP编写时,我选择了最低要求,并编写了向前兼容的代码。我不担心使其向后兼容。
如果我使用#!/bin/bash
shebang,为什么不使用bashisms?我开始得到的印象是有些人就是喜欢bash的 bash化(双关语意)只是为了它的缘故。
人们经常使用bash
并且shell
可以互换使用-可能是由于bash是许多系统上的默认shell。因此,我可以理解添加注释以警告该代码使用了bashisms,但我不明白使用它们的含义是错误的。
显然,如果我编写的脚本严格仅供个人使用,则可以用我想要的任何语言编写。但我想认为我编写的某些代码可能对其他人有用。
发布前,我尝试过寻找问题的答案。我发现了很多有关如何测试可移植性的信息,但是找不到什么时候进行此操作很重要。
那么,什么时候编写可移植脚本很重要?
例如,
- 哪种类型的脚本应尽可能地可移植?
- 没有安装Bash的系统有多普遍?
- 如果系统已安装Bash,它还会具有GNU版本的find和其他实用程序吗?
bash
仅带有标签时,有人会评论“这是bashism且不可移植”。当我回答带有标记的问题时C
,我不在乎它是否可移植Java
。
bash
特定功能,而不是可移植的,就像我要指出的是,某些实用程序正在使用GNU特定扩展名(即使该问题被标记为Linux)。我从未见过有人说“这是一种bashism,并且您永远不应该使用它”。