This file is indexed.

/etc/bash_completion.d/modules is in environment-modules 3.2.10-8.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#
# Bash commandline completion (bash 3.0 and above) for Modules 3.2.10
#
_module_avail() {
	/usr/share/modules/3.2.10/bin/modulecmd bash -t avail 2>&1 | sed '
		/:$/d;
		/:ERROR:/d;
		s#^\(.*\)/\(.\+\)(default)#\1\n\1\/\2#;
		s#/(default)##g;
		s#/*$##g;'
}

_module_not_yet_loaded() {
	comm -23  <(_module_avail|sort)  <(tr : '\n' <<<${LOADEDMODULES}|sort)
}

_module_long_arg_list() {
	local cur="$1" i

	if [[ ${COMP_WORDS[COMP_CWORD-2]} == sw* ]]
	then
		COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") )
		return
	fi
	for ((i = COMP_CWORD - 1; i > 0; i--))
	do case ${COMP_WORDS[$i]} in
	   add|load)
		COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") )
		break;;
	   rm|remove|unload|switch|swap)
		COMPREPLY=( $(IFS=: compgen -W "${LOADEDMODULES}" -- "$cur") )
		break;;
	   esac
	done
}

_module() {
	local cur="$2" prev="$3" cmds opts

	COMPREPLY=()

	cmds="add apropos avail clear display help\
	      initadd initclear initlist initprepend initrm initswitch\
	      keyword list load purge refresh rm show swap switch\
	      unload unuse update use whatis"

	opts="-c -f -h -i -l -s -t -u -v -H -V\
	      --create --force  --help  --human   --icase\
	      --long   --silent --terse --userlvl --verbose --version"

	case "$prev" in
	add|load)	COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") );;
	rm|remove|unload|switch|swap)
			COMPREPLY=( $(IFS=: compgen -W "${LOADEDMODULES}" -- "$cur") );;
	unuse)		COMPREPLY=( $(IFS=: compgen -W "${MODULEPATH}" -- "$cur") );;
	use|*-a*)	;;			# let readline handle the completion
	-u|--userlvl)	COMPREPLY=( $(compgen -W "novice expert advanced" -- "$cur") );;
	display|help|show|whatis)
			COMPREPLY=( $(compgen -W "$(_module_avail)" -- "$cur") );;
	*) if test $COMP_CWORD -gt 2
	   then
		_module_long_arg_list "$cur"
	   else
		case "$cur" in
		# The mappings below are optional abbreviations for convenience
		ls)	COMPREPLY="list";;	# map ls -> list
		r*)	COMPREPLY="rm";;	# also covers 'remove'
		sw*)	COMPREPLY="switch";;

		-*)	COMPREPLY=( $(compgen -W "$opts" -- "$cur") );;
		*)	COMPREPLY=( $(compgen -W "$cmds" -- "$cur") );;
		esac
	   fi;;
	esac
}
complete -o default -F _module module