Как запретить 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
будет запущена внешняя версия. Это влияет только на текущий процесс сценария, поэтому вы можете безопасно делать это в своих сценариях.