У меня есть скрипт, который я запускаю как
./script.sh --params
или как
linux32 ./script.sh --params
в моем файле bash_completion. У меня есть
complete -F _my_function ./script.sh
Это работает толькодля вызова ./script.sh
.
Я попытался добавить
complete -F _my_function "linux32 ./script.sh"
Вот функция:
$ type _my_function
_my_function is a function
_my_function ()
{
local cur="${COMP_WORDS[$COMP_CWORD]}";
local prev="";
(( COMP_CWORD > 0 )) && prev="${COMP_WORDS[$(( COMP_CWORD - 1))]}";
[[ $cur == '=' && $prev == --* ]] && {
COMPREPLY=("");
return
};
local words=(-a -o -p -h -u);
case "${prev}" in
-a)
local actions="build shell clean distclean download upgrade upload unmount";
COMPREPLY=($(compgen -W "${actions}" -- ${cur}));
return 0
;;
-o)
local optional_groups="kde";
COMPREPLY=($(compgen -W "${optional_groups}" -- ${cur}));
return 0
;;
-p)
local files=$(ls -1 src/lfs/* | sed "s,.*src/lfs/,,g");
COMPREPLY=($(compgen -W "${files}" -- ${cur}));
return 0
;;
*)
;;
esac;
_exclude_cmd_line_opts;
COMPREPLY=($(compgen -W "${words[*]}" -- "$cur"))
}
, но, похоже, она не работает.
Есть предложения? Спасибо, IvanK.