bash 4.3 Os comandos “multiple dot” falham silenciosamente no Fedora

7

Acabei de notar isso na festa 4.3; o número exato da versão é 4.3.42 (1) -release (x86-redhat-linux-gnu).

$ ..
$ ...
$ ....
$ .....

Por que o "comando não encontrado" não é solicitado?

$ ...
$ echo $? 
$ 127

Eu verifiquei o $PATH e o alias nothing; O homem não está ajudando nenhum dos dois. O bash é executado no Fedora Linux, mas acho que não está relacionado ao sistema operacional.

EDITAR

Acabei de notar que é o mesmo para qualquer comando de ponto inicial

.za
.zaza
..za
..zaza
    
por Emmanuel 13.05.2016 / 17:34

1 resposta

9

Isso foi causado pela manipulação de comandos não encontrados no Fedora.

A execução de um comando desconhecido (incluindo ... etc., se nenhum alias corresponder) faz com que command_not_found_handle seja executado com o comando ausente como parâmetro (consulte /etc/profile.d/PackageKit.sh para sua definição). No cenário fornecido, o manipulador executa /usr/libexec/pk-command-not-found , novamente com o comando ausente como parâmetro. Anteriormente, pk-command-not-found simplesmente ignorava qualquer comando começando com . :

if (argv[1][0] == '.')
    goto out;

e saiu com o código 127.

Esse comportamento foi introduzido para corrigir Red Hat # 1151185 , também é referenciado em Bash não imprime qualquer erro msg em comandos inexistentes começando com ponto , e tem um bug solicitando uma correção (Chapéu Vermelho # 1292531 ). Ele foi corrigido em grande parte no FC 27 com atualizações, desde o PackageKit 1.1.8 (veja este commit ): agora comandos com os pontos principais são processados, somente . e .. são ignorados.

    
por 13.05.2016 / 18:12

Tags