In /etc/* there are severeal scripts that are named *.sh. Most of them are not marked executable and don't contain a "#! /bin/sh" line.
Thus, to run them you need to "sh foo.sh" or "source foo.sh" them.
This raises a problem if the script contains code like "test -x foo ||
exit 0". This would cause the executing shell to be terminated if it
uses source to run the script.
Therefore I believe that either of the following has to be made
policy:
a) Scripts in /etc/init.d, /etc/rc.boot and similar directories that
have the ".sh" suffix may be run by source'ing them. Thus they
must not contain any `exit' statements. If they need to quit the
script they have to use return instead
b) All scripts in /etc/init.d, /etc/rc.boot and similar directories
have to be standalone shell scripts. They must have the 'x' flag
turned on and contain a regular command to execute them in the
first line (such as "#! /bin/sh"). They must not be called *.sh.
A mixture of this does not make sense imho:
What is the benefit of *.sh scripts if one has to call a shell to
execute them and isn't allowed to source them? In that case they
should contain the command to execute them - thus be a standalone
script.
Regards,
Joey
--
We all know Linux is great... it does infinite loops in 5 seconds.
- Linus Torvalds
pgpcxfDfLiCFB.pgp
Description: PGP signature

