[CentOS] Real sh? Or other efficient shell for non-interactive scripts
Valeri Galtsev
galtsev at kicp.uchicago.edu
Fri Apr 24 17:36:59 UTC 2015
On Fri, April 24, 2015 12:04 pm, John R Pierce wrote:
> On 4/24/2015 9:47 AM, 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 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.
>
> oh fun, just did some tests (using c6.latest). if you're in bash,
> ./script (sans shebang) runs it in bash. if you're in dash or csh,
> ./script runs it in sh. if you're in ksh, it runs it in ksh.
>
Wow! Surprise ;-)
I just tested it on my FreeBSD workstation, and all works as expected
(i.e. the script obeys shebang). Just in case, here is the contents of my
test script:
########
#!/bin/sh
readlink /proc/$$/file
########
( note that that "file" is because I'm using FreeBSD /proc, for Linux you
may need to replace the line with something like:
readlink /proc/$$/exe
Now the fun part
in bash:
$ echo $0
bash
$ ./test
/bin/sh
in tcsh
% echo $0
tcsh
% ./test
/bin/sh
in zsh
% echo $0
zsh
% ./test
/bin/sh
But yet funnier thing:
$ bash ./test
/usr/local/bin/bash
$ tcsh ./test
/bin/tcsh
$ zsh ./test
/usr/local/bin/zsh
Well, no creepy surprises for me ! ;-)
(you can do the same on Linux of your choice and see if it behaves ;-)
Thanks.
Valeri
++++++++++++++++++++++++++++++++++++++++
Valeri Galtsev
Sr System Administrator
Department of Astronomy and Astrophysics
Kavli Institute for Cosmological Physics
University of Chicago
Phone: 773-702-4247
++++++++++++++++++++++++++++++++++++++++
More information about the CentOS
mailing list