What is a 'shebang' line?

James Litewski picture James Litewski · Aug 15, 2011 · Viewed 16.7k times · Source

Currently I'm trying to start programming on my new Mac. I installed TextWrangler, and chose C++ as my language of choice; since I have some prior knowledge of it, from when I used Windows.

So, I wrote the ever so common "Hello World" program. Although, when I tried to run it, I got an error:

"This file doesn’t appear to contain a valid ‘shebang’ line (application error code: 13304)"

I tried searching the error code to find out how to fix this, but I couldn't find anything.. I have no idea what a 'shebang' line is... Can someone help me out?

Answer

Seth Carnegie picture Seth Carnegie · Aug 15, 2011

You need to compile it with a compiler first. I assume you tried to run the source file like ./source but C++ doesn't work this way.

With some compilers however, you can provide a shebang-line as the first line of the source file (the #! is known as shebang or crunchbang, hence the name), like so:

#!/path/to/compiler

So that the shell knows what application is used to run that sort of file, and when you attempt to run the source file by itself, the compiler will compile and run it for you. That's a compiler-dependent feature though, so I recommend just plain compiling with G++ or whatever Macs use to get an executable, then run that.