在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情况
有人能提供一些建议吗?
谢谢。 Jack
我遇到了两种语法,如果用户将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情况
有人能提供一些建议吗?
谢谢。 Jack
set -e
等是否有效,以及哪些shell可能是符合系统标准的/bin/sh
。你看过了吗? - Etan Reisnerset -e
只是我发现的脚本中常见的一种方式或惯例。我查阅了有关打包 deb 的文档,但并没有说太多。然而,@Tonin 提供了一份很好的 Debian 政策文档,清晰地解释了脚本。 - Jack Yu