#!/bin/sh versus #!/bin/bash

Bevan C. Bennett bevan at fulcrummicro.com
Fri Jan 9 23:22:12 UTC 2004


Matthew Zimmerman wrote:
> 
> Any ideas what the heck is going on? I've noticed this on RH8
> and RH9 as well.
> 

I can't reproduce your results locally, but I have a suspicion.

Try testing with:
#!/bin/bash --norc --noprofile
/bin/echo Hello world

to disable reading the various profile and login scripts.

Note the following from 'man bash':

        If  bash  is  invoked  with  the name sh, it tries to mimic the 
startup
        behavior of historical versions of sh as  closely  as  possible, 
  while
        conforming  to the POSIX standard as well.  When invoked as an 
interac-
        tive login shell, or a non-interactive shell with the  --login 
option,
        it  first  attempts  to read and execute commands from 
/etc/profile and
        ~/.profile, in that order.  The  --noprofile  option  may  be 
used  to
        inhibit  this  behavior.  When invoked as an interactive shell 
with the
        name sh, bash looks for the variable ENV, expands its value  if 
  it  is
        defined,  and uses the expanded value as the name of a file to 
read and
        execute.  Since a shell invoked as sh does not attempt to read 
and exe-
        cute  commands from any other startup files, the --rcfile option 
has no
        effect.  A non-interactive shell invoked with  the  name  sh 
does  not
        attempt  to  read  any  other  startup files.  When invoked as 
sh, bash
        enters posix mode after the startup files are read.
 

        When bash is started in posix mode, as with the  --posix 
command  line
        option, it follows the POSIX standard for startup files.  In 
this mode,
        interactive shells expand the ENV variable and commands  are 
read  and
        executed  from  the  file  whose  name is the expanded value. 
No other
        startup files are read.





More information about the fedora-list mailing list