Como o comando bash “builtin” é definido?

1

Eu notei que o comando como cd .. é realmente convertido em builtin cd .. e, em seguida, executado. Mas como é que builtin é definido? which builtin não mostra nada e não está em /bin , /usr/bin etc. É apenas parte do programa bash e está sendo tratado de forma diferente?

    
por h__ 16.03.2015 / 01:43

1 resposta

4

os builtins são apenas parte do bash. Você pode descobrir se um comando está embutido usando type . Por exemplo:

$ type export cd source alias
export is a shell builtin
cd is a shell builtin
source is a shell builtin
alias is a shell builtin

Muitos comandos embutidos são incorporados porque não podem funcionar de outra maneira. cd e source são exemplos.

Outros builtins são construídos apenas para eficiência. test (AKA [...] ) e echo são exemplos.

Para saber mais, consulte a seção SHELL BUILTIN COMMANDS de man bash ou a seção on-line manual do bash . Para obter uma lista de builtins disponíveis, execute help no prompt de comando. Para obter informações sobre um determinado elemento incorporado, digamos test , execute help test . Observe que help test fornecerá informações sobre o test builtin do bash, enquanto, por contraste, man test provavelmente fornecerá ajuda sobre o comando test externo.

Quais comandos estão disponíveis como executáveis e incorporados

Com a opção -a , type exibirá todos os locais que contêm o comando nomeado. Por exemplo:

$ type -a echo
echo is a shell builtin
echo is /bin/echo

Como usar um executável quando um builtin está disponível

Se, por algum motivo estranho, você quiser usar um executável específico e não o shell embutido, tudo o que você precisa fazer é especificar o caminho:

$ /bin/echo "This is not the builtin"
This is not the builtin

Como os recursos internos geralmente têm mais recursos, isso geralmente é útil apenas para testes de compatibilidade.

Como executar o shell embutido quando está oculto por uma função ou alias

Tendo em vista uma escolha, o shell normalmente escolherá executar o comando incorporado. A exceção é se o usuário tiver definido um alias ou função com o mesmo nome. Se você quiser ter certeza de que está executando o builtin, use o comando builtin :

$ builtin echo  1 2 3
1 2 3
    
por 16.03.2015 / 02:51

Tags