Обратите внимание, что coreutils
- это программный пакет, разработанный проектом GNU для предоставления набора базовых утилит Unix для систем GNU. Вы найдете только coreutils echo
из коробки в системах GNU ( Debian
, trisquel
, Cygwin
, ] Fedora
, CentOS
...). В других системах вы найдете другую реализацию (обычно с другим поведением, поскольку echo
- одно из наименее переносимых приложений). FreeBSD будет иметь FreeBSD echo
, большинство систем на базе Linux будут иметь busybox echo
, AIX будет иметь AIX echo
...
В некоторых системах даже будет более одного (например, / bin / echo
и / usr / ucb / echo
в Solaris (последний является частью пакета, который теперь является необязательным в более поздних версиях Solaris, например, для Пакет утилит GNU, из которого вы получите / usr / gnu / bin / echo
) все с разными интерфейсами командной строки).
GNU coreutils
был перенесен на большинство Unix-подобных (и даже не-Unix-подобных, таких как MS Windows) систем, поэтому вы сможете скомпилировать coreutils
' echo
в большинстве систем, но, вероятно, это не то, что вы ищете.
Также обратите внимание, что вы обнаружите несовместимость между версиями coreutils
echo
(например, он не распознавал последовательности \ x41
с -e
]) и что на его поведение может влиять окружение (переменная POSIXLY_CORRECT
).
Теперь, чтобы запустить echo
из файловой системы (найденной поиском по $ PATH
), как и для любой другой встроенной функции, обычно используется ] env
:
env echo this is not the builtin echo
В zsh
(без эмуляции других оболочек) вы также можете выполнять:
command echo ...
без необходимости выполнять дополнительную команду env
.
Но я надеюсь, что приведенный выше текст проясняет, что это не поможет с точки зрения переносимости. Для портативности и надежности используйте printf
вместо .