O culpado é o seu bash_completion , e não sua versão bash.
Com a versão principal do repo de bash_completion , cd
preenchimento automático inclui diretórios em CDPATH
.
Você pode fazer alterações diretamente no seu local bash_completion
, mas é melhor escrever seu próprio cd
auto-completar.
Se você quiser um efeito global, crie um arquivo chamado /etc/bash_completion.d/cd
com o seguinte conteúdo:
_cd()
{
local cur=${COMP_WORDS[COMP_CWORD]}
_init_completion || return
local IFS=$'\n' i
compopt -o filenames
local -r mark_dirs=$(_rl_enabled mark-directories && echo y)
local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y)
_filedir -d
if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
i=${COMPREPLY[0]}
if [[ "$i" == "$cur" && $i != "*/" ]]; then
COMPREPLY[0]="${i}/"
fi
fi
return 0
}
if shopt -q cdable_vars; then
complete -v -F _cd -o nospace cd
else
complete -F _cd -o nospace cd
fi
Esta versão obteve tudo do original, excluindo a parte CDPATH
.
Se você deseja usar apenas para sua configuração, edite .bashrc
com o seguinte:
_my_cd () {
declare CDPATH=
_cd "$@"
}
complete -F _my_cd cd
Há alguns casos em que a conclusão do bash não funcionou com CDPATH
no seu Mac OSX, seu bash_completion
é muito antigo ou você ainda não o carregou.
Você pode usar a variável BASH_COMPLETION_COMPAT_DIR
para definir o local onde bash_completion
carrega sua função de conclusão personalizada, o padrão é /etc/bash_completion.d
.