Search code examples
shellunixshshebang

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


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?


Solution

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

    #!/bin/sh <--------- bourne shell compatible script
    #!/usr/bin/perl  <-- perl script
    #!/usr/bin/php  <--- php script
    #!/bin/false <------ do-nothing script, because false returns immediately anyways.
    

    Most scripting languages tend to interpret a line starting with # as comment and will ignore the following !/usr/bin/whatever portion, which might otherwise cause a syntax error in the interpreted language.