Explain: #!/bin/bash - or #!/bin/bash -- In A Shell Script

by Vivek Gite · 9 comments

Q. I know #!/bin/bash is shebang line. But, I noticed a few shell script shebang line ends with a single dash ( #!/bin/bash - ) or double dash ( #!/bin/bash -- ). Can you explains me purpose of such shebang line?

A. A - or -- signals the end of options and disables further option processing i.e. bash will not accept any of its option. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --. This is done to improve script security. Some user may perform setuid based script root spoofing. To avoid interpreter spoofing you need to add -- to #!/bin/bash. This is rare but possible attack.

Featured Articles:

Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our daily email newsletter to make sure you don't miss a single tip/tricks. Subscribe to our weekly newsletter here!

{ 9 comments… read them below or add one }

1 irado 09.23.08 at 11:12 am

man bash:

” — A — signals the end of options and disables further option processing. Any argu ments after the — are treated as filenames and arguments. An argument of – is equivalent to –.

2 henry 09.23.08 at 1:31 pm

Hello,

Please, any possible book i could study more on shell programming? Please, this is the second mail i am sending and i haven’t got a reply.

3 marco 09.23.08 at 1:57 pm

> henry ‘any possible book i could study more on shell programming?’:
Richard Stones, Neil Matthew – Beginning Linux Programming
ISBN-13: 9780764543739
12,20$
http://www.amazon.com/gp/product/0764543733

4 Johan 09.23.08 at 2:38 pm

“Advanced Bash-Scripting Guide” is a great book available at the Linux Documentation Project’s website – http://tldp.org/guides.html

5 vivek 09.23.08 at 3:14 pm

Mastering UNIX Shell Scripting: Books by Randal K. Michael

Oreilly Classic Shell Scripting

6 dj 09.25.08 at 5:09 pm

Henry, try “Linux Command” site at:
http://www.linuxcommand.org/
The author is in process of writing a book, but imho, if the goal is to teach bash, the site gets an A+. He walks through a real example. It’s good clean code. You’ll learn to do it right.

Then I would look at “The Linux Documentation Project” at:
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

7 marco 09.25.08 at 6:26 pm

> DJ “http://www.linuxcommand.org/”
That seems to be a real good source. :)

8 tom 11.06.09 at 8:38 am

when i loggin into redhat as an user . i got a prompt like this -bash-3.1$
how i can change that into normal user prompt………..
pls
thank you

9 runner724 12.09.09 at 4:53 pm

you can set whatever prompt you like with

set PS1=”[newprompt]“; export PS1

but you’ll have to set the prompt every time you log in, unless you can edit the hidden bash profile that should be in your home dir

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous FAQ:

Next FAQ:

nixCraft FAQ PDF Collection Now Available To All