回答:
これは/ etc / bash_completionによって制御されます
必要に応じて、_expand()で拡張コードをコメント化できます。
これがfedora 17の私のバージョンですが、あなたのバージョンも同様です:
# This function expands tildes in pathnames
#
_expand()
{
# FIXME: Why was this here?
#[ "$cur" != "${cur%\\}" ] && cur="$cur\\"
# Expand ~username type directory specifications. We want to expand
# ~foo/... to /home/foo/... to avoid problems when $cur starting with
# a tilde is fed to commands and ending up quoted instead of expanded.
if [[ "$cur" == \~*/* ]]; then
eval cur=$cur
elif [[ "$cur" == \~* ]]; then
cur=${cur#\~}
COMPREPLY=( $( compgen -P '~' -u "$cur" ) )
[ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}
return ${#COMPREPLY[@]}
fi
}
function _expand() { :;}
ました~/.bashrc
。
bash
特定のコマンド(ファイル名以外のオートコンプリートプログラム引数など)に対して、より高度なオートコンプリートを提供できます。システム上のコマンドに対して定義された、このようなプログラム可能な完了関数がありvim
ます。
タイピングcomplete
コマンドプロンプトでは用の自動補完を提供するために使用されますどのような機能が表示されますbash
。
$ complete
complete -o default -F _complete_open open
入力type function_name
して、その定義について学びます。
$ type _complete_open
_complete_open is a function
_complete_open ()
{
# function definition
}
関数が定義された場所を見つけるため。以下を使用します。
$ shopt -s extdebug
$ declare -F _complete_open
_complete_open 70 /Users/danielbeck/.bash_profile