A saída de um comando e sua saída de link simbólico não correspondem

0

Estou usando o RASPBIAN no meu pi de framboesa. Eu descubro que o comando "apropos" é um link simbólico do comando "wahtis". No entanto, a saída desses comandos não corresponde quando usada com os mesmos argumentos:

$ whatis delete
delete: nothing appropriate.

mas

$ apropos delete
argz_delete (3)      - functions to handle an argz list
delete_module (2)    - unload a kernel module
dphys-swapfile (8)   - set up, mount/unmount, and delete an swap file
git-branch (1)       - List, create, or delete branches
git-replace (1)      - Create, list, delete refs to replace objects
git-symbolic-ref (1) - Read, modify and delete symbolic refs
git-tag (1)          - Create, list, delete or verify a tag object signed 
***output is truncated to save space....***

É claro que o propósito é um elo simbólico do que é.

pi@raspberry:~ $ which apropos
/usr/bin/apropos
pi@raspberry:~ $ ls -l /usr/bin/apropos
lrwxrwxrwx 1 root root 6 Aug 24  2017 /usr/bin/apropos -> whatis

Como isso pode acontecer?

    
por Amjad Abdullah 30.04.2018 / 21:48

1 resposta

4

O executável em execução saberá a linha de comando completa e poderá modificar seu comportamento, dependendo do nome pelo qual foi chamado. Para a instância específica de apropos / whatis , você pode ver no código-fonte (em torno da linha 895 da versão recente vinculada) que a primeira coisa que é feita é determinar se o comando foi chamado pelo nome apropos or not:

int main (int argc, char *argv[])
{
#ifdef HAVE_ICONV
    char *locale_charset;
#endif
    int status = OK;

    program_name = base_name (argv[0]);
    if (STREQ (program_name, APROPOS_NAME)) {
        am_apropos = 1;
        argp_program_version = "apropos " PACKAGE_VERSION;
    } else {

Há cerca de uma dúzia de locais adicionais no processamento que verificam o sinalizador am_apropos e se comportam de maneira diferente, dependendo de estar ou não definido.

    
por 30.04.2018 / 22:09