Index: utils/Bash/Makefile.am
===================================================================
--- utils/Bash/Makefile.am	(revision 9fd196a18e0a47b5eb4d5d4d98793332ac09cad9)
+++ utils/Bash/Makefile.am	(revision 9fd196a18e0a47b5eb4d5d4d98793332ac09cad9)
@@ -0,0 +1,8 @@
+
+BASH_TOOLS = \
+	Bash/bash_completion
+
+EXTRA_DIST += Bash/bash_completion
+CLEANFILES += ${BASH_TOOLS}
+bin_SCRIPTS += ${BASH_TOOLS}
+
Index: utils/Bash/bash_completion
===================================================================
--- utils/Bash/bash_completion	(revision 9fd196a18e0a47b5eb4d5d4d98793332ac09cad9)
+++ utils/Bash/bash_completion	(revision 9fd196a18e0a47b5eb4d5d4d98793332ac09cad9)
@@ -0,0 +1,78 @@
+# bash_completion for molecuilder 
+#
+# gives a list of all available actions, gives list of options for the last action
+
+function _molecuilder_option()
+{
+	local cmd="${1##*/}"
+	local word=${COMP_WORDS[COMP_CWORD]}
+	local line=${COMP_LINE}
+	option=`echo $line | awk -F"--" {'print $NF'} | tr -d \ `
+	previousoption=`echo $line | awk -F"--" {'print $(NF-1)'} | tr -d \ `
+	#echo "current option is '$word', line is '$line', and cmd is '$cmd', last option is '$option', and last but one is '$previousoption'."
+	COMPREPLY=()
+	# if current option is molecuilder, give all available actions
+	if test x"$option" = x"molecuilder"; then
+		# "molecuilder "
+		COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+	else
+		# if current argument is void, look at previous (if its not molecuilder)
+		if test x"$option" = x""; then
+			if test x"$previousoption" = x"molecuilder"; then
+				# "molecuilder --"
+				COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+			else
+				# "molecuilder --some-action --"
+				COMPREPLY=($($cmd --help | grep "^'$previousoption.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+				if  test ${#COMPREPLY[*]} -eq 0; then
+					# "molecuilder --some-option --"
+					COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+				else
+					COMPREPLY=($($cmd --help --actionname "$previousoption" | grep Option\  | awk -F"'" {'print "--"$2'} | tr -d \'))
+					# if action has no options, give list of actions
+					if  test ${#COMPREPLY[*]} -eq 0; then
+						COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+					fi
+				fi
+			fi
+		elif test -z `echo "$word" 2>/dev/null | grep "\-\-"`; then
+			# "molecuilder somefile/value"
+			COMPREPLY=( $( compgen -W "$( ls --color=n -1 ${word}*.in ${word}*.pdb ${word}*.pcp ${word}*.psi ${word}*.data ${word}*.xyz 2>/dev/null| sed -e 's/ /\\ /g' )" -- $cur ))
+		else
+			# "molecuilder --something"
+			COMPREPLY=($($cmd --help | grep "^'$option.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+			# check whether its an action
+			if test ${#COMPREPLY[*]} -eq 1; then
+				# check whether it's same as option
+				if test x"${COMPREPLY[0]}" = x"--$option"; then
+					# "molecuilder --an-action"
+					#echo "Giving help for option $option"
+					COMPREPLY=($($cmd --help --actionname "$option" | grep Option\  | awk -F"'" {'print "--"$2'} | tr -d \'))
+					# if action has no options, give list of actions
+					if  test ${#COMPREPLY[*]} -eq 0; then
+						COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+					fi
+				fi
+			fi
+			# if the "action" is unknown, it must be actually an option (segment), give all available options from previous action
+			if test ${#COMPREPLY[*]} -eq 0; then
+				# "molecuilder --an-action --opt.."
+				COMPREPLY=($($cmd --help --actionname "$previousoption" | grep Option\ | grep $option | awk -F"'" {'print "--"$2'} | tr -d \'))
+				# if action has no options, give list of actions
+				if  test ${#COMPREPLY[*]} -eq 0; then
+					COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+				else
+					#if we have a complete option, give again all available actions
+					if test x"${COMPREPLY[0]}" = x"--$option"; then
+						# "molecuilder --an-action --one-of-its-options"
+						COMPREPLY=($($cmd --help | grep "^'.*'" | awk -F":" {'print "--"$1'} | tr -d \'))
+					fi
+				fi
+			fi
+		fi
+	fi
+	#echo "returning ${COMPREPLY[*]}."
+	return 0
+}
+
+complete -F _molecuilder_option molecuilder
