What does the line "#!/bin/sh" mean in a UNIX shell script?

Jake picture Jake · Sep 9, 2011 · Viewed 192.5k times · Source

I was going through some shell script tutorials and found the following sample program:

#!/bin/sh
clear
echo "HELLO WORLD"

Can anyone please tell me what the significance of the comment #!/bin/sh at the start is?

Answer

Marc B picture Marc B · Sep 9, 2011

It's called a shebang, and tells the parent shell which interpreter should be used to execute the script.

e.g.

#!/usr/bin/perl   <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.

It's implemented as a comment so that anything coming in that line will not "relevant" to the interpreter specified. e.g. all scripting languages tend to understand that a line starting with # is a comment, and will ignore the !/usr/bin/whatever portion, which might otherwise be a syntax error in that particular language.