Quelle est la différence entre la command echo embeddede et / bin / echo?

Je jouais avec le type et les commands et j'ai découvert quelque chose d'étrange.

type soit returnne le path, soit dit qu'une command est un Bash embedded. which soit returnne le path, soit rien pour les ins ins, comme exit ou type

Ce qui est étrange, c'est que le type echo dit que l'écho est embedded comme je l'espérais.

Mais which echo donne / bin / echo comme path vers l'exécutable echo. Cela ne semble pas se produire pour d'autres commands embeddedes.

Je me request quelle est la différence entre les deux, celle que Bash choisit d'exécuter dans les scripts et sur la command line, et quelle est l'histoire derrière les deux échos.

Mon système est Ubuntu Desktop 12.04

Il y a un echo embedded et un echo command. Utilisez le type -a echo pour les voir tous.

Parce que le type lui-même est un shell embedded, il est capable de connaître d'autres builtins.

Et which n'est qu'une command habituelle. Par conséquent, il ne sait pas quel shell vous utilisez et ne vous parle que des commands sur le disque.

Habituellement type est la command correcte pour vous dire ce qui se passe si vous tapez un mot dans votre shell.