Web lists-archives.com

Re: reboot stuff doesn't start

On Tue, May 28, 2019 at 01:23:45PM -0400, Gene Heskett wrote:
> I'll sure as hell 2nd that. If anything, rc.local should stack the errors 
> and keep on trucking, and when its out of things to do, then spit out 
> the errors if any, in the order encountered, to the syslog.

If you want that behavior, remove the -e option.  -e forces the shell
to terminate on the first "error", instead of trucking on.

> I assume the -e is a bash option? I just rescanned the man page without 
> find a reference other than a test for file -e=exists filename.
> It is in the shebang line, so what does that do when its in that 
> position. 

Yes, it's a bash (or sh) option.  It turns on the "errexit" flag, which
means that the shell will terminate under various conditions that are
impossible to summarize cleanly, but all of which involve a command
exiting with a non-zero status.

<https://mywiki.wooledge.org/BashFAQ/105> has some explanations.

The relevant man page section is:

              -e      Exit  immediately  if a pipeline (which may consist of a
                      single simple command), a list, or  a  compound  command
                      (see SHELL GRAMMAR above), exits with a non-zero status.
                      The shell does not exit if the  command  that  fails  is
                      part  of  the command list immediately following a while
                      or until keyword, part of the test following the  if  or
                      elif  reserved  words, part of any command executed in a
                      && or || list except the command following the final  &&
                      or ||, any command in a pipeline but the last, or if the
                      command's return value is being inverted with !.   If  a
                      compound  command  other  than a subshell returns a non-
                      zero status because a command failed while -e was  being
                      ignored,  the  shell  does  not exit.  A trap on ERR, if
                      set, is executed before the shell  exits.   This  option
                      applies to the shell environment and each subshell envi‐
                      ronment separately (see  COMMAND  EXECUTION  ENVIRONMENT
                      above), and may cause subshells to exit before executing
                      all the commands in the subshell.

                      If a compound command or shell function  executes  in  a
                      context  where -e is being ignored, none of the commands
                      executed within the compound command  or  function  body
                      will  be  affected  by the -e setting, even if -e is set
                      and a command returns a failure status.  If  a  compound
                      command  or  shell function sets -e while executing in a
                      context where -e is ignored, that setting will not  have
                      any  effect  until  the  compound command or the command
                      containing the function call completes.


              -o option-name
                      The option-name can be one of the following:
                      errexit Same as -e.

The easiest way to find it is to search for "errexit" and then scroll
upward.  At least, that's how I did it.