Wenn Sie es aus, dann wird die Schale nicht, wenn es versucht, exec () ist. Was passiert, hängt davon ab, welche neben Shell Sie als Login-Shell. Die meisten Tanks wird davon ausgegangen, dass das Skript ist in ihrer eigenen Sprache. Also, wenn Sie bash als Login-Shell und versuchen, ein Korn-Shell-Skript, dass nicht über die #! / usr / bin / ksh, bash wird dann versuchen, es als ein Bash-Skript. bash und ksh etwas kompatibel und funktionieren würde. Auf der anderen Seite könnte es scheitern.
Angenommen, Sie verwenden ksh als Login-Shell und Sie Korn Shell-Skripten, ohne dass die erste Zeile. Die Dinge scheinen ok. Dann entscheiden Sie, um zu versuchen bash als Login-Shell. Plötzlich Dinge brechen.
Und so wird vor allem für jeden, der grimmige verwendet csh / tcsh als Login-Shell und die Skripte ohne dass erste Zeile. Diese Tanks kontrollieren Sie das Skript an und versuchen Sie es erraten, ob sie oder die alten Bourne-Shell ausgeführt werden soll, ist. Der Test beschäftigen sie ist so schlecht, dass sie geschlagen werden von einem Zufallsgenerator. Und niemand noch mit der alten Bourne-Shell trotzdem.
Und ja, es ist so eine Art Standard. Die meisten Kernel wissen. Aber ich glaube nicht, dass es eine offizielle
posix Standard.