要想自己写的shell能兼容所有的linux发行版,需要注意什么
有很多linux发行版的shell语法有一些小的差别,就类似css,js的浏览器兼容问题。
请问,如何解决这个问题
这是一个很好的问题,我也曾面临过这样的兼容性挑战。总体来说,脚本的兼容性,需要考虑这样几个方面的因素:
(1)Shell类型:目前主流的是bash/sh、zsh,也有用ksh的。
(2)Shell版本:不同版本的bash,也会存在差异,比如重定向的用法差异等
(3)环境:不同的环境设置,会造成命令不同的行为。比如wget命令就会依赖不少环境变量。
(4)版本:脚本中会引用各种命令,其版本不同,也会造成行为的不同。比如不同的pidof对匹配字符串的长度就有差异。
(5)发行版类型:不同Linux发行版,其系统文件和目录设置,都存在一定的差异,比如权限、log位置等都有差异。
据我了解,应该不存在一份文档或者指南,可以囊括所有的差异因素。最好的办法,可能也是看起来很笨的办法,就是尽量枚举出可能的差异,然后在不同的测试环境中去实际测试啦。