【发布时间】:2016-03-15 13:34:21
【问题描述】:
在 Deb 包维护脚本中,例如postinstall、prerm 等。我想我们经常使用 /bin/sh 作为 shell 脚本解释器。但是,/bin/sh 在不同的发行版或用户偏好上可能会有所不同。例如,Ubuntu 将 /bin/sh 链接到 /bin/dash,或者某些用途可能会链接到 /bin/tcsh。
如果用户将 shell 更改为 tcsh,我遇到的两种语法可能会失败。
1) set -e # tcsh 无法理解。
2) > /dev/null 2>&1 # 模糊重定向。
首先想到的是去掉(1),把(2)改成>& /dev/null。但是,我发现在大多数维护者脚本中,都会出现“set -e”这一行。
现在,我不确定应该
a) 我只是解决了所有问题并使用 /bin/sh b) 改为使用 /bin/bash c) 忽略 tcsh 大小写
谁能提供一些建议?
谢谢。 杰克
【问题讨论】:
-
我认为 debian 打包政策有这方面的指导方针,表明在这些位置使用
set -e等是否有效,以及在符合标准的系统上哪些 shell 可能是/bin/sh。你看过吗? -
set -e只是我发现的脚本中的一种常见方式或做法。我看过有关打包 deb 的文档,但并没有说太多。但是,@Tonin 确实提供了一份关于 Debian 政策的好文档,清楚地解释了脚本。