[Basic Query]bsh script in tcsh shell

I am a beginner (Just 2 days old:o ), i will really appreciate if you can solve my silly queries as below:

Lets say i write a script like this

#!/bin/bsh
clear
#to read name from keyboard
echo "your name please.."
read fname
echo "you just entered $fname"
exit 0

My environment is set to work in tcsh.
My query are:
a) how does placing !/bin/bsh as comment results in its execution as bsh shell? AS i am a beginner, i need to know if it is an exception ? how does placing a path as comment affects the execution of code.

b)If, say i place the path as second line of my comment. assume my first two lines are as below

#just comment
#!/bin/bsh

The code executed, but i also get some errors which says command not found.

c) Is it compulsorily to place "exit 0" at the end of every script? where should it be used?

The "shebang" line is not an ordinary comment (btw do you mean #! /bin/bash)
It instructs the shell that executes the script which interpreter to call on the script when it is the first line of the script.

The value you exit from a script sets $? in the parent shell, this can be used to "report" an error in the running of the script to the parent or to make decisions based on the exit status.

A facile example which checks for the existence of the user in /etc/passwd before running the useradd program.

seterr.sh
8<------->8
#!/bin/bash
exit 1

verified_useradd.sh
8<--------------------------->8
#!/bin/bash
found_user=$(grep -e  "^$1:" /etc/passwd)
if [ "X$found_user" == "X" ] ; then
    # no such user in /etc/passwd yet
    /usr/sbin/useradd $i
    exit 0
else
    echo "User $i exists, please retry with a new user name"
    exit 1
fi


new_user
8<-------->8
seterr.sh
while [ $? -ne 0 ] ;do 
   echo "Please priovide a username"; 
   read uname; 
   verified_useradd.sh uname;  
done

In the example above the while loop will continue until verified_useradd.sh returns with no error, thus guaranteeing a user has been added (or at least that useradd was called

Hey,
I meant #!/bin/bsh only, and its working.

Thanks for introducing the concept of shebang, I wasn't aware of it.