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

by Vivek Gite [Last updated: September 23, 2008]

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.

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!

{ 7 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. :)

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>

Tagged as: , , , , , , ,

Previous post: How To Select Best Linux Desktop Application

Next post: Linux Error: Page Allocation Failure and Solution