function _compalias() { local name val valarr fn name="${COMP_WORDS[0]}" val="${BASH_ALIASES[$name]}" if [ -z "$val" ]; then return 1 fi read -ra valarr <<< "$val" COMP_WORDS=("${valarr[@]}" "${COMP_WORDS[@]:1}") COMP_LINE="${COMP_LINE//$name/$val}" COMP_CWORD=$((${#COMP_WORDS[@]} - 1)) COMP_POINT="${#COMP_LINE}" fn="$(complete -p "${COMP_WORDS[0]}" | grep -Po -- '-F\s+\K\w+')" "$fn" "${COMP_WORDS[0]}" "${COMP_WORDS[-1]}" "${COMP_WORDS[-2]}" } function compalias() { alias "$@" complete -o nospace -F _compalias "${@%%=*}" }