В чем разница между встроенной командой echo и /bin/echo?

В чем разница между встроенной командой echo и /bin/echo?

Я экспериментировал с командами typeи whichи обнаружил нечто странное.

typeлибо возвращает путь, либо сообщает, что команда является встроенной в Bash. whichлибо возвращает путь, либо ничего не возвращает для встроенных команд, таких как exitилиtype

Странно, что здесь type echoговорится, что эхо встроено, как я и ожидал.

Но which echoдает /bin/echo как путь к исполняемому файлу echo. Этого, похоже, не происходит ни с одной другой встроенной командой.

Мне интересно, в чем разница между ними, какой из них Bash выбирает для выполнения в скриптах, а какой в ​​командной строке, и какова история этих двух echo.

Моя система — Ubuntu Desktop 12.04.

решение1

Есть встроенная echoи команда echo. Используйте type -a echo, чтобы увидеть их все.

Поскольку typeон сам является встроенным компонентом оболочки, он может знать о других встроенных компонентах.

И whichэто всего лишь обычная команда. Поэтому она не знает, какую оболочку вы используете, и только сообщает вам о командах на диске.

Обычно typeэто правильная команда, сообщающая вам, что произойдет, если вы введете какое-либо слово в оболочке.

Связанный контент