[CentOS] Real sh? Or other efficient shell for non-interactive scripts
Stephen Harris
lists at spuddy.org
Fri Apr 24 19:54:03 UTC 2015
On Fri, Apr 24, 2015 at 09:47:24AM -0700, Gordon Messmer wrote:
> On 04/24/2015 03:57 AM, Pete Geenhuizen wrote:
> >if you leave it out the script will run in whatever environment it
> >currently is in.
>
> I'm reasonably certain that a script with no shebang will run with
> /bin/sh. I interpret your statement to mean that if a user is using ksh
"It depends".
On older Unix-type systems which didn't understand #! then the shell
itself did the work. At least csh did (sh didn't necessary). If the
first character was a # then csh assumed it was a csh script, otherwise
it assumed a sh script. That's why a lot of real old scripts began with :
> and enters the path to such a script, it would also run in ksh. That
> would only be true if you "sourced" the script from your shell.
So on CentOS 5 with ksh93 as my shell
% cat x
echo ${.sh.version}
Note that it's a simple one liner with no #!
% ./x
Version AJM 93t+ 2010-06-21
That's ksh output!
Let's change my shell to "bash" instead
% bash
bash-3.2$ ./x
./x: line 1: ${.sh.version}: bad substitution
So now it's bash that's trying to interpret it!
So "it depends" is still true :-)
Basically, without #! there (which allows it to be exec'd) the shell
determines how the file is interpreted.
--
rgds
Stephen
More information about the CentOS
mailing list