There is constant confusion about what the CGI specifies. Let's
make it clear:
CGI specifies the interface between HTTP server and
a script: the command line args, environment variables,
standard input and standard output.
CGI has NOTHING WHATSOEVER to do with how a server decides if
a file is executable or not.
One server writer could use x-bits to resolve executability.
Another could use a fixed cgi-bin directory and a fixed prefix in
URL pathname. Another can have many of them, with generic mapping
scheme. Yet another can just list them in its config file.
It's all up to server implementation.
CGI guarantees that *scripts* written for one CGI server
indeed work on another CGI compliant server.
A script can be detected executable in numerous ways -- never mind
how it's done. In any case, once the server has somehow found out that
a file is an executable CGI script, it WILL call it in a manner described
in CGI/1.0 spec.
-- Cheers, Ari --