Se houver um comando interno e um comando externo (programa) com o mesmo nome, qual deles será executado por padrão?

2

bash tem um comando interno chamado kill , e também no Linux, existe um comando externo (programa) chamado kill .

Quando executo kill em bash , o comando interno kill é executado.

Eu tenho duas perguntas:

  1. Existe uma configuração que eu possa alterar para tornar o comando externo executado em vez do comando interno por padrão (sem especificar o caminho completo do comando externo, claro).
  2. É um comportamento padrão para o comando interno ser executado em vez do comando externo por padrão em todos os shells (principais), ou é apenas uma coisa bash ?
por Steve 25.11.2017 / 05:37

2 respostas

3

  1. Use env para invocá-lo.

    $ env kill
    kill: not enough arguments
    $ kill
    kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
    
  2. Todos os shells e processadores de comandos.

por 25.11.2017 / 05:47
2

Para sua primeira pergunta: Sim, existe uma configuração para que o comando externo seja executado em vez do comando interno por padrão.

Você pode desativar o processamento

enable -n COMMAND

Você pode ativar o recurso

enable COMMAND

ou você pode alterar a prioridade do comando. A prioridade do comando bash é :

  • alias, é o mais alto
  • função
  • incorporado
  • comando externo em $ PATH

Para sua segunda pergunta: Eu acho que você pode sempre assumir que o comando interno é anterior ao comando externo. Não é apenas uma coisa bash.

    
por 25.11.2017 / 07:59