Вопрос: fc встроен в отсутствующий из тире (т. е. история командной строки не работает)?


В dash в соответствии с Builtins в разделе существует fc встроенный, который управляет историей оболочки и повторно выполняет команды от него, FCEDIT а также HISTSIZE также упоминаются там. Но когда я пытаюсь выполнить его dash дает команду не найденную ошибку.

$ echo one
one
$ fc -l 1
dash: 2: fc: not found
$ fc
dash: 3: fc: not found

Вопрос в том, почему? Является ли это одним из стандартных и сознательных решений, которые разработчики Ubuntu сделали, или мне может понадобиться включить fc как-то?

я нашел Отчет об ошибке в Debian это упоминание fc, но упомянутый патч для i386, и последняя активность в отчете была в 2008 году, поэтому ничего относительно Ubuntu пока нет. А также исторически, fc имеет исправления и существует в версиях для разных выпусков BSD, поэтому здесь должно быть что-то специфическое для Ubuntu или для Debian.


4
2018-04-21 18:15


Источник




Ответы:


Проверьте номер строки 57-59 в src/builtins.def.in исходного кода:

#ifndef SMALL
histcmd     -u fc
#endif

SMALL определяется, если --with-libedit является не установленный в конфигурации, что соответствует нашему тире / sh. Я думаю, что это касается оптимизации объема памяти.

Также Changelog говорит:

2005-10-29  Herbert Xu <herbert@gondor.apana.org.au>
[...]
* Disable histcmd completely when SMALL is defined.
[...]

Если не компилировать с --with-libedit был преднамеренным выбором или нет, я не знаю.


3
2018-04-21 18:48



Ты прав. По всей видимости, --with-libedit выделяет множество функций, которые полагаются на него. Это похоже на мой старый вопрос askubuntu.com/a/704719/295286   Kinda становится предсказуемым :) - Sergiy Kolodyazhnyy
Иначе говоря: бедная ubuntu тире искалечена, она просто служит как / bin / sh. Я признаю, что пакет с полной версией тире был бы неплохо иметь в дополнение. - Sebastian Stark
Да, согласился. И, честно говоря, я думаю, что он еще более ограничен, чем POSIX /bin/sh, Я вижу преимущество в скорости для более старого оборудования, но мы уже в 2018 году и сохраняем /bin/sh не обеспечивает такой большой скорости. Похоже, что использование более нового оборудования с многоядерными процессорами лучше. - Sergiy Kolodyazhnyy