O que o comando builtin faz no bash?

35

Eu sei o que é um comando interno, mas o que o builtin faz? A execução de which ls mostra-me /bin/ls , mas a execução de which builtin não retorna nada.

man builtin apenas me fornece uma lista de comandos incorporados, um dos quais é builtin . O resto da página man explica o que é um arquivo embutido, mas não o que é builtin .

builtin --help me diz builtin: usage: builtin [shell-builtin [arg ...]] , mas ainda não é o que faz.

É parte do bash de uma forma que outros comandos internos não são?

    
por lfalin 17.08.2017 / 03:49

1 resposta

51

O comando builtin garante que você execute a versão interna do shell do comando em vez de executar outro comando com o mesmo nome.

Por exemplo, digamos que você definiu uma função de shell chamada cd para imprimir algum status extra toda vez que você alterar os diretórios. Mas você estragou tudo e agora não pode alterar os diretórios corretamente. Portanto, agora você pode digitar builtin cd ~ para fazer o cd com sucesso de volta ao seu diretório pessoal sem executar a função de shell quebrada.

E, a propósito, minha cópia da página man bash tem uma seção chamada "SHELL BUILTIN COMMANDS", e define o significado do comando builtin nessa seção (transcrito abaixo).

builtin shell-builtin [arguments]

    Execute  the  specified  shell builtin, passing it arguments, and
    return its exit status.  This is useful when defining a function
    whose name  is the  same as a shell builtin, retaining the
    functionality of the builtin within the function.  The cd builtin is
    commonly  redefined  this  way.

    The  return status is false if shell-builtin is not a shell builtin
    command.
    
por 17.08.2017 / 04:07

Tags