Итак, по результатам обсуждений на этом форуме, я понял, что мне нужно фиксить bash_completion самому.
проблема выглядит так. Есть каталог, в названии которого есть русские буквы. Автодополнение путей с этим каталогом не работает.
демонстрация:
combine@mediacenter /tmp $ shopt -u progcomp
combine@mediacenter /tmp $ cd ./dir\ with\ spaces/Русские\ буквы/<TAB>subdir/^C
combine@mediacenter /tmp $ shopt -s progcomp
combine@mediacenter /tmp $ cd ./dir\\\\\\\ with\\\\\\\ spaces/Русские\\\\\\\ буквы/<TAB><TAB>^C
combine@mediacenter /tmp $ cd ./dir\ with\ spaces/dir_with\'symbol/<TAB>just_dir/
при включенном bash-completion при каждом <TAB> добавляются лишние обратные слэши, только если в пути есть русские буквы. Красивое название каталога с символом ' к проблеме отношения не имеет.
Вот код, который это делает:
710 _cd()
711 {
712 local IFS=$'\t\n' cur="$(_get_cword)" i j k
713 # Enable -o filenames option, see Debian bug #272660
714 compgen -f /non-existing-dir/ >/dev/null
715 COMPREPLY=( $( compgen -o default "$cur" ) )
716 return 0
717 }
760 if shopt -q cdable_vars; then
761 complete -v -F _cd $nospace cd
762 else
763 complete -F _cd $nospace cd
764 fi
- нельзя отказаться от функции _cd, в ней делается дополнение для каталогов из CDPATH (в листинге поскипано).
- та же проблема наблюдается при дополнении путей файлов для vim или даже ls, а значит, проблему нужно решить как можно более глобально.
Помогите придумать, что сделать, чтобы ошибка пропала.
Спасибо.