Bug#139969: debian-policy: dubious shell programming advice re: set -e [patch included]
>>"era" == era eriksson <firstname.lastname@example.org> writes:
era> The sections which recommend the use of set -e are IMHO a bit off the
era> mark. The recommendations imply that failing silently is a Good Thing
era> and that not handling errors sensibly is okay in shell scripts.
Really? If you do not set -e, it is easier to handle errors?
How is that? Withiut set -e we may never even know there is an error
era> In summary, relying on set -e to trap your errors for you
era> results in counter-intuitive behavior from the end user's
set -e does not, in the normal sense of the word, trap
errors. It causes your script to handle errors that would otherwise
be missed. So, set -e actually detects error otherwise missed, and
while you say you want errors detected and handled, you are actually
making the situation worse.
era> If the init.d script just runs and doesn't tell you
era> the program you wanted to start is not available, is that good
Indeed. It is also required behaviour. I may have removed (put
not purged) the package, and would not like the init script to bitch
and moan about it.
era> If the script just dies silently when your disk fills
era> up, is that good behavior? No, these errors should be trapped
era> and at least result in a warning message.
I think set -e is orthogonal to error handling. using set -e
makes one handle the errors -- for set -e does end execution with an
failed status on error.
era> (For example, I have filed a bug against e.g. the `bug' package for an
era> issue which is more or less caused by the present policy; see bug
>> 76127. I suspect there will be many more which just wait to be
Well, it would be nice to handle all possible errors, yes. But
in this case it was not a set -e that caused the problem, it was the
fact that the result was indistinguishable from a user not adding
anything to the report.
Having file systems full is an exceptional condition, and like
all unusual error conditions, may not be fully detected.
Removing error detection with set -e makes things worse.
era> As a proposed fix, I have reworded some parts of the policy, as
era> included in the patch below. This modifies the "should" and adds a
era> "may", with some related changes in earlier sections of the manual. I
era> also took the liberty to add comments to the /etc/init.d/bind example
era> where it breaks the new recommendation.
And would make policy inconsistent with itself.
Date: 28 Mar 90 18:06:57 GMT From: email@example.com (Randal
Schwartz) $_ = "Just a sed
Manoj Srivastava <firstname.lastname@example.org> <http://www.debian.org/%7Esrivasta/>
1024R/C7261095 print CB D9 F4 12 68 07 E4 05 CC 2D 27 12 1D F5 E8 6E
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
To UNSUBSCRIBE, email to email@example.com
with a subject of "unsubscribe". Trouble? Contact firstname.lastname@example.org