Я экспериментировал с командами 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
это правильная команда, сообщающая вам, что произойдет, если вы введете какое-либо слово в оболочке.