Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
02-15-2011, 07:05 AM
|
#1
|
Member
Registered: Aug 2003
Location: Mallorca, Spain
Distribution: xubuntu
Posts: 551
Rep:
|
Making sure script is running in bash!
is this a good way of doing it? Shall I use & when starting the new process? Itested in bash and dash.
testbash=$(ps -e | grep $$ | grep bash)
if [ 0 = ${#testbash} ]; then
echo "new process"
bash MYPROCESSNAME
exit 0
fi
echo "It's in bash jippi"
|
|
|
02-15-2011, 07:09 AM
|
#2
|
Senior Member
Registered: Dec 2003
Location: Trondheim, Norway
Distribution: Debian and Ubuntu
Posts: 1,466
|
I think it's better to specify it in the shebang
#!/bin/bash
Don't use
#!/bin/sh
when it's a bash script.
Last edited by Guttorm; 02-15-2011 at 07:11 AM.
|
|
|
02-15-2011, 07:55 AM
|
#3
|
Member
Registered: Aug 2003
Location: Mallorca, Spain
Distribution: xubuntu
Posts: 551
Original Poster
Rep:
|
so if someone will call with sh, dash or so its up to them?
and i realize that i had to change mod for it to work.
thanks
|
|
|
02-15-2011, 09:11 AM
|
#4
|
LQ Veteran
Registered: Sep 2003
Posts: 10,532
|
Hi,
Quote:
Originally Posted by kalleanka
so if someone will call with sh, dash or so its up to them?
|
Nope. The hashbang (or shebang) tells the OS what needs to be used to execute/interpret the script that follows.
For example, if a script starts with:
#!/bin/bash - all that follows is done by bash,
#!/usr/bin/perl - all that follows is done by perl,
#!/bin/dash - all that follows is done by dash.
There are a lot more examples, but I guess you get the picture.
Also have a look here for a more comprehensive explanation: Shebang (Unix)
Hope this helps.
|
|
|
02-15-2011, 10:59 AM
|
#5
|
Senior Member
Registered: Dec 2003
Location: Trondheim, Norway
Distribution: Debian and Ubuntu
Posts: 1,466
|
I think Kalleanka's code helps in a situation where a user is using something like ksh interactively and types "sh scriptname", instead of doing the chmod. I often do that because it's faster, but I use bash 
|
|
|
02-15-2011, 11:21 AM
|
#6
|
Senior Member
Registered: Nov 2005
Distribution: Debian, Arch
Posts: 3,836
|
You could check that BASH is set:
Code:
if [ -z "$BASH" ]; then
echo this script must be run with bash
exit 1
fi
|
|
|
02-15-2011, 11:26 AM
|
#7
|
LQ Veteran
Registered: Sep 2003
Posts: 10,532
|
Hi,
Quote:
Originally Posted by ntubski
You could check that BASH is set:
Code:
if [ -z "$BASH" ]; then
echo this script must be run with bash
exit 1
fi
|
You shouldn't rely on this method, if you switch shells from bash to say csh the BASH variable is still present although you are now using csh....
See posts #8 and #11
Last edited by anon237; 02-16-2011 at 02:10 AM.
Reason: Mix up of $BASH and $SHELL
|
|
|
02-15-2011, 06:46 PM
|
#8
|
Senior Member
Registered: Nov 2005
Distribution: Debian, Arch
Posts: 3,836
|
Quote:
Originally Posted by druuna
Hi,
You shouldn't rely on this method, if you switch shells from bash to say csh the BASH variable is still present although you are now using csh....
|
No, the variable is not exported:
Code:
~/tmp$ echo $BASH
/bin/bash
~/tmp$ zsh
% echo $BASH
%
|
|
|
02-16-2011, 12:51 AM
|
#9
|
LQ Veteran
Registered: Sep 2003
Posts: 10,532
|
Hi,
Quote:
Originally Posted by ntubski
No, the variable is not exported:
Code:
~/tmp$ echo $BASH
/bin/bash
~/tmp$ zsh
% echo $BASH
|
You are correct, I read BASH and was thinking SHELL variable.....
My mistake!
|
|
|
02-16-2011, 01:50 AM
|
#10
|
Senior Member
Registered: Oct 2005
Distribution: Gentoo, Slackware, LFS
Posts: 2,248
|
I wonder, is $BASH exportable to other shells? i.e. if bash runs ash.. will $BASH exist in the environment of ash?.. i forgot about this already.. but I think $BASH_VERSION or $BASH_VERSINFO is safe..
Last edited by konsolebox; 02-16-2011 at 01:55 AM.
|
|
|
02-16-2011, 01:56 AM
|
#11
|
LQ Veteran
Registered: Sep 2003
Posts: 10,532
|
Hi,
Quote:
Originally Posted by konsolebox
I wonder, is $BASH exportable to other shells? i.e. bash runs ash.. will $BASH exist in the environment of ash?.. i forgot about this already.. but I think $BASH_VERSION or $BASH_VERSINFO is safe..
|
ntubski was correct about $BASH. $BASH_VERSION and $BASH_VERSINFO are also _not_ exported when switching shells.
|
|
|
02-16-2011, 02:08 AM
|
#12
|
Senior Member
Registered: Oct 2005
Distribution: Gentoo, Slackware, LFS
Posts: 2,248
|
@druuna: thanks for checking
off topic: bash 4.2 has been released last feb. 13 and i've checked the changelog.. one of its features says that a new option in declare/typeset has been added and it's '-g' .. with that option, variables can now be declared global in any scope even inside functions.. finally. and i'm the one who made this request before as well
i can finally make the final versions of Shell Script Loader with this ^_^
|
|
|
All times are GMT -5. The time now is 06:03 PM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|