I have an alias, ee, defined for my favorite editor, mg. When I do something likemg foand then hit tab, if a file foo exists, I get tab completion to:mg fooOn most systems I use (e.g., all versions of ubuntu for many years now, and some installs of debian),ee foalso completes properly toee fooBut on one system I use, which has Debian 6.0 and GNU bash 4.1.5(1)-release, tab completion fails for the version with the alias. Note that this is not a problem with completing the alias itself -- it's a problem with completing the arguments of the aliased command. Is there a way to fix this behavior on the Debian system? Upgrade to bash 4.2.x? Fiddle with config files? 
Tab completion doesn't work for arguments when command is an alias
bash;autocomplete
Edit: OK. Seems like I might have misread the situation. Thought you meant program options as in:$mplayer_alias -pla<tab><tab>-playing-msg  -playlist$but guess it is file completion. I don't know, but give it a go. As a quick fix this should work:complete -f -o default eeGiving:$ ee<tab><tab>file1 file2 file3$as of Programmable Completion Builtins. E.g. the -X pattern can be useful. E.g. to exclude .swp and .swo files:complete -f -X '*.sw[op]' eeonly show .zip, .ZIP:complete -f -o default -X '!*.+(zip|ZIP)' my_unzip_aliassome might need you to add shopt -s extglob in configuration file.OLD Answer:You could try out something like this in your .bash_completion.At least as a starter.The core idea is to simply add complete for the alias using the existingcomplete script for the real program. Here I assume that they are all in the format:complete -F _complete_function_from_original program_nameYou can get what it is by executing: complete -p program_name. Best to check first.For some methods like apt-get one can use only alias + load:_load_comp_hack apt-get myaliasFor others like mplayer one need a function wrapper, as in e.g.:myalias() { mplayer $@; }                      |                      +--- Could be messyIt is quite possible there is a better way to solve this, but has worked fine for my use. I mostly use it for wrapper scripts where I extend the functionality of the original program. Have not used it on aliases.I do not feel to safe on this hack, but you could see if it works._load_comp_hack(){    local cc=    # Make sure completion scripts are sourced.    # Report error if source fail.    if . /usr/share/bash-completion/completions/$1 >/dev/null 2>&1; then        # Extract the completion function used by the real program.        if cc=$(complete -p $1 | cut -d' ' -f3); then            # Add it to the alias            complete -F $cc $2            return 0        fi    fi    echo bash-completion '$1' for '$2' not found.}_load_comp_hack mplayer mplad_load_comp_hack apt-get z                |       |                |       +----- Alias, script or function                +------------- Real functionSome programs use more general completion like _longopt, by which thesource file won't be located. Usually it is no need to source either, so asimpler variant could be:_load_comp_hack(){    local cc=    if cc=$(complete -p $1 | cut -d' ' -f3); then            complete -F $cc $2    fi}One problem here, IIRC, is that some completion scripts are not loaded until first run, as in first: prog tabtab. As an alternative perhaps add it as an else if sourcing of file fails. 