Strictly speaking, shell scripts written as startup scripts, before /usr is mounted, need to be written with a statically compiled shell. This is because shared libraries are usually mounted on /usr and you really want the whole executable to be there before using it as an interpreter.
Once run level 2 or more is reached, /usr is mounted and so it doesn't matter much which language you use in a startup script. And on servers where / and /usr are on the same file system, the interpreter of the script doesn't matter much, regardless of run level.
Things I'd do is run a who -r
at the run level of interest to make sure you're actually at the run level you think you are at. Otherwise the precautions mentioned by regexes
are well thought out and should be followed.
Update: case where / and /usr are the same.