Qual é a diferença entre o erro “não encontrado” e o erro “comando não encontrado” são iguais?

2

Em esta questão o usuário está recebendo o erro "não encontrado". Percebi que o erro "não foi encontrado" em vez de "comando não encontrado".

Esses dois erros são diferentes? Eu não tenho certeza se eu apenas nunca prestei atenção a isso antes ou se isso é diferente.

Veja um exemplo:

/etc/cron.daily/apt:
/etc/cron.daily/apt: 91: /etc/cron.daily/apt: date: not found
/etc/cron.daily/apt: 97: /etc/cron.daily/apt: rm: not found
/etc/cron.daily/apt: 448: /etc/cron.daily/apt: pidof: not found
xargs: rm: No such file or directory
/etc/cron.daily/apt: 176: /etc/cron.daily/apt: date: not found
/etc/cron.daily/apt: 176: /etc/cron.daily/apt: date: not found
    
por mchid 15.09.2015 / 01:42

1 resposta

3

É a diferença entre como bash e dash tratam casos quando um comando não é encontrado.

Em bash , existe uma função chamada command_not_found_handle :

$ type command_not_found_handle 
command_not_found_handle is a function
command_not_found_handle () 
{ 
    if [ -x /usr/lib/command-not-found ]; then
        /usr/lib/command-not-found -- "$1";
        return $?;
    else
        if [ -x /usr/share/command-not-found/command-not-found ]; then
            /usr/share/command-not-found/command-not-found -- "$1";
            return $?;
        else
            printf "%s: command not found\n" "$1" 1>&2;
            return 127;
        fi;
    fi
}

Então, em bash :

$ foobar
foobar: command not found

No caso de dash , não existe essa função definida e obtemos:

$ foobar
dash: 1: foobar: not found

Como o Ubuntu usa dash como o shell padrão para operações internas, então quando dash estiver analisando algum script, ele mostrará seu próprio formato.

    
por 15.09.2015 / 01:57