当前位置:  开发笔记 > 编程语言 > 正文

Deb软件包维护者脚本应该使用Bash还是Sh

如何解决《Deb软件包维护者脚本应该使用Bash还是Sh》经验,为你挑选了1个好方法。

在Deb软件包维护者脚本中,例如postinstall,prerm等.我认为我们经常使用/ bin/sh作为shell脚本解释器.但是,/ bin/sh可能在不同的分发或用户首选项上有所不同.例如,Ubuntu link/bin/sh to/bin/dash,或者某些用途可能链接到/ bin/tcsh.

我遇到两种类型的语法,如果用户将shell更改为tcsh,可能会失败.

1)设置-e #tcsh无法理解这一点.

2)>/dev/null 2>&1#模糊重定向.

第一个想法是删除(1),并将(2)更改为>&/ dev/null.但是,我在大多数维护者脚本中发现了'set -e'行.

现在,我不确定应该

a)我刚解决所有问题并使用/ bin/sh b)更改为使用/ bin/bash c)忽略tcsh case

有人可以提供一些建议吗?

谢谢.插口



1> Tonin..:

在Debian政策不会强制你使用/bin/sh的外壳,你可以使用任何其他一个只要你正确地命名(与家当),并试图安装到它可在系统上(这限制了你,如果默认提供炮弹你在preinst脚本中使用它).

但Debian策略告诉您/bin/sh,无论实际是什么,都将始终实现SUSv3 Shell命令语言(即:符合POSIX的shell)和一些其他功能.这就是维护者脚本所依赖的.

Debian的,/bin/sh/bin/bash直到莱尼.来自Squeeze,现在是/bin/dash.有关更多信息,请参阅Debian wiki.

在Debian或任何衍生产品上,if /bin/sh实际链接到/bin/tcsh它将是本地管理员更改的本地设置.这可能不仅会破坏你的脚本,还会破坏许多其他脚本.Debian的政策文件实际上告诉维护者,以避免cshtcsh作为脚本语言.

总之,我认为您不应该为您的脚本兼容而烦恼tcsh,最佳做法是仅用于/bin/sh满足您的所有包装需求.

如有疑问,请务必参阅完整的Debian政策文件.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有