Как запретить bash использовать встроенную команду?

Я пытаюсь исправить скрипт, который использует echo, то есть с помощью команды builtin вместо команды, как я могу это предотвратить?

Я знаю, что могу сделать /bin/echo чтобы принудительно использовать это, но я бы не хотел жестко кодировать путь (для переносимости).

Я думал, используя что-то как:

$ECHO=`which echo`
$ECHO -e "textnhere"

но which echo возвращает: "echo: shell встроенная команда".


Я закончил тем, что определил echo функция, которая использует env as @Kenster рекомендует. Таким образом, мне не нужно изменять вызовы echo в скрипте.

echo() {
  env echo $*
}

# the function is called before the built-in command.
echo -en "textnhere"

2 ответов


использовать


вы можете отключить встроенное Эхо:

enable -n echo

теперь просто делаю echo anything будет запущена внешняя версия. Это влияет только на текущий процесс сценария, поэтому вы можете безопасно делать это в своих сценариях.