function _compalias() { local name val valarr fn name="${COMP_WORDS[0]}" val="${BASH_ALIASES[$name]}" [ -z "$val" ] && return 1 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 "${@%%=*}" }