Normalmente, para ver a conclusão associada a um comando como o firewall-cmd, seria usado complete -p firewall-cmd
e esperaria ver algo como complete -F _firewall_cmd firewall-cmd
voltando. Um examinaria a função _firewall_cmd
usando type _firewall_cmd
.
O pacote de conclusão do bash para o Debian usa um comando complete -D
para configurar uma função de conclusão padrão, que verifica se há uma conclusão específica disponível na primeira vez em que é usada e, em caso afirmativo, a carrega.
Portanto, é importante tentar a conclusão uma vez antes de ver como a conclusão está configurada.
Por firewall-cmd
isto
O arquivo define a função de conclusão que inicia atualmente
_firewall_cmd()
{
local cur prev words cword split
_init_completion -s || return
firewall-cmd --state 1> /dev/null || return
O programa / usr / bin / firewall-cmd em si é um script python, que acaba precisando de privilégios de root e pedindo autenticação. Uma chamada de firewall-cmd --state
retornará verdadeiro se o firewall estiver em execução. A intenção do código de conclusão, portanto, parece ser não concluir se o firewall não estiver em execução. No entanto, está escrito para precisar dos privilégios para ver se o firewall está em execução e isso está causando os prompts indesejados.
A exclusão da linha firwall-cmd --state 1> /dev/null || return
da função de conclusão torna a conclusão mais rápida, não solicita senha e outras vantagens gerais.