> On 30 Jun 2018, at 12:47, Petru Rațiu <[email protected]> wrote:
>
> Hello.
>
> E ceva cu mecanismul de bash completion care imi scapa. Am in .bashrc o
> invocare de /etc/bash_completion si cumva aveam impresia ca face tot
> magicul acolo, insa am constatat urmatoarele (intr-un shell nou):
>
> petre@hearth:~ $ complete -p ssh
> -bash: complete: ssh: no completion specification
> petre@hearth:~ $ ssh <TAB><TAB>
> Display all 498 possibilities? (y or n)
> petre@hearth:~ $ complete -p ssh
> complete -F _ssh ssh
>
>
> Deci cumva ceva se incarca de bash dinamic cand dau tab, si nu mi-e clar
> cum sa fac asta proactiv, pentru ca vreau sa setez functia aia de complete
> in bashrc si pe un alias (si daca dau complete -F _ssh ma injura ca nu stie
> functia).
>
> Intrebarea mea e cum naiba vad ca bash_completion l-a invatat pe shell (sau
> pe readline, I don't know) ca "ssh" e un keyword la care sa faca anumite
> stuffs inainte sa-l pun sa faca acele chestii prima oara. Am incercat sa ma
> uit in sursa lui bash_completion dar nu cred ca inteleg suficient de bine
> cum functioneaza programmable completion pentru ca comportamentul de mai
> sus mi se pare de-a dreptul absurd.
Eu am in /etc/bash_completion.d/ssh:
_ssh()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep '^Host' ~/.ssh/config ~/.ssh/config.d/* 2>/dev/null | grep -v
'[?*]' | cut -d ' ' -f 2-)
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh ssh
# complete -p ssh
complete -F _ssh ssh
# ssh <TAB><TAB>
10.x.y.z 10.y.x.z 10.z.x.y
Pe distrourile noi, know_hosts este hashed, totusi chiar fara a exista
know_hosts <TAB><TAB> nu mai face nimic in cazul meu.
Ca sa nu alterez mult configuratia standard, am adaugat manual serverele
importante in ~/.ssh/config
bash -v ce zice? ar trebui sa vezi acolo tot ce se intampla.
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug_lists.lug.ro