[X-Unix] Hiding apps from the command line
Eugene Lee
list-themacintoshguy at fsck.net
Fri Mar 26 11:40:21 PST 2004
On Fri, Mar 26, 2004 at 05:04:34PM +0000, Stroller wrote:
:
: On Mar 26, 2004, at 12:15 pm, Eugene Lee wrote:
: >
: >: #! /bin/sh
: >
: >No spaces here, it should be "#!/bin/sh" (without the quotes).
:
: It's probably more elegant to use #!/bin/bash at the beginning of your
: scripts, as we don't actually have a Bourne shell on our Macs.
True, but not everyone has /bin/bash. Some have /usr/local/bin/bash.
/bin/sh is guaranteed to be more portable.
: In
: additional to its superset of commands `bash` does, I believe, behave
: slightly differently from traditional `sh`; if invoked as `sh` Bash
: _should_ behave as `sh`, however I am not aware that this has been
: demonstrated. [1]
Actually, the binary does behave differently according to the man page:
...
--norc Do not read and execute the personal initialization file
~/.bashrc if the shell is interactive. This option is on by
default if the shell is invoked as sh.
...
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.
...
Bash attempts to determine when it is being run by the remote shell
daemon, usually rshd. If bash determines it is being run by rshd, it
reads and executes commands from ~/.bashrc, if that file exists and is
readable. It will not do this if invoked as sh. The --norc option may
be used to inhibit this behavior, and the --rcfile option may be used
to force another file to be read, but rshd does not generally invoke
the shell with those options or allow them to be specified.
However, the differences are slight at best and are not worth arguments
that are better reserved for more interesting topics.
--
Eugene Lee
http://www.coxar.pwp.blueyonder.co.uk/
More information about the X-Unix
mailing list