VENV_DIR=${VENV_DIR:-~/.local/virtualenv} _envon() { local venvs cur # Get the list of environments venvs=$(for x in $VENV_DIR/*; do basename "$x" ; done) cur="${COMP_WORDS[COMP_CWORD]}" COMPREPLY=( $(compgen -W "${venvs}" -- ${cur}) ) return 0 } envon() { source $VENV_DIR/$1/bin/activate } complete -F _envon envon