A comprehensive survey of incompatibilities between Bash and the classic Bourne shell.
Same as above, but for the Korn shell (ksh).
A primer on CGI programming, using Bash.
Here's a simple CGI script to get you started.
Example O-1. Print the server environment
1 #!/bin/bash
2 # May have to change the location for your site.
3 # (At the ISP's servers, Bash may not be in the usual place.)
4 # Other places: /usr/bin or /usr/local/bin
5 # Might even try it without any path in sha-bang.
6
7 # test-cgi.sh
8 # by Michael Zick
9 # Used with permission
10
11
12 # Disable filename globbing.
13 set -f
14
15 # Header tells browser what to expect.
16 echo Content-type: text/plain
17 echo
18
19 echo CGI/1.0 test script report:
20 echo
21
22 echo environment settings:
23 set
24 echo
25
26 echo whereis bash?
27 whereis bash
28 echo
29
30
31 echo who are we?
32 echo ${BASH_VERSINFO[*]}
33 echo
34
35 echo argc is $#. argv is "$*".
36 echo
37
38 # CGI/1.0 expected environment variables.
39
40 echo SERVER_SOFTWARE = $SERVER_SOFTWARE
41 echo SERVER_NAME = $SERVER_NAME
42 echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE
43 echo SERVER_PROTOCOL = $SERVER_PROTOCOL
44 echo SERVER_PORT = $SERVER_PORT
45 echo REQUEST_METHOD = $REQUEST_METHOD
46 echo HTTP_ACCEPT = "$HTTP_ACCEPT"
47 echo PATH_INFO = "$PATH_INFO"
48 echo PATH_TRANSLATED = "$PATH_TRANSLATED"
49 echo SCRIPT_NAME = "$SCRIPT_NAME"
50 echo QUERY_STRING = "$QUERY_STRING"
51 echo REMOTE_HOST = $REMOTE_HOST
52 echo REMOTE_ADDR = $REMOTE_ADDR
53 echo REMOTE_USER = $REMOTE_USER
54 echo AUTH_TYPE = $AUTH_TYPE
55 echo CONTENT_TYPE = $CONTENT_TYPE
56 echo CONTENT_LENGTH = $CONTENT_LENGTH
57
58 exit 0
59
60 # Here document to give short instructions.
61 :<<-'_test_CGI_'
62
63 1) Drop this in your http://domain.name/cgi-bin directory.
64 2) Then, open http://domain.name/cgi-bin/test-cgi.sh.
65
66 _test_CGI_ |
Any volunteers?