l'evasività delle risposte dipende dal fatto che tutto viene stabilito dall'amministratore del server tramite la configurazione del server web.
ad esempio su un mio server ho questa configurazione per i CGI di sistema:
codice:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
invece per i CGI dei vari siti:
codice:
UserDir www
UserDir disabled root
ScriptAlias /cgi-bin/ /home/*/www/cgi-bin/
<Directory /home/*/www/cgi-bin>
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
dove con la "*" si indicano le home dei vari utenti, è una wildcat.
Ma le configurazioni possibili sono infinite.
tieni presente che tramite la direttiva:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
si dice al web server di andare a cercare i file con questo URL:
http://www.tuosito.com/cgi-bin/script.pl
in:
/var/www/cgi-bin/script.pl
directory che quindi se ha i giusti chmod sarà raggiungibile dal web server.
Cosa completamente diversa è la stringa di inizio degli script:
#!/usr/bin/perl
chiamata shebang, che dice al web server dove trovare l'interprete di perl, che in genere sta in quella posizione o più raramente in /usr/local/bin/perl