Skip to content

Latest commit

 

History

History
54 lines (40 loc) · 5.97 KB

ru_unix_haters_handbook_chapter3_review.org

File metadata and controls

54 lines (40 loc) · 5.97 KB

Отзыв на третью главу книги Unix Haters Handbook

Проблема с MANPATH

Эта часть отзыва уже была озвучена на канале.

Хочется сказать, что manpath в mandoc из OpenBSD настраивается не из переменной, а из конфига в /etc/man.conf mandoc можно использовать не только в OpenBSD, но и в voidlinux. По моему и в alpine, но я не уверен. В остальных дистрибутивах линукса используется программа manpath, у которой, мне кажется, есть способ показать доступные каталоги с манулами, которые тем не менее не включены в manpath. Ещё можно добавить, что систему именования каталогов манов из System V я ни в одном из линукс дистрибутивов не видел, а во фряхе и OpenBSD их нет по понятной причине — они никогда не воплощали дизайн sytem v.

Проблема с документацией на shell builtin

Она такая старая, что сейчас вряд ли кто-то захочет её решать. Суть когда вы набираете man history вы не получите мануала по этой команде, потому что она встроена в шелл, а не является отдельной программой. Но на самом деле у этого проблемы я вижу несколько путей решения.

Алиасы для мануалов

Набрав man printf и man sprintf в OpenBSD вам откроется один и тот же мануал. Всё дело в том, что для разных библиотечных функций можно использовать один и тот же мануал. Ничто не мешает так делать и с командами. Ничто, кроме предположения, что кто-то захочет написать свою версию history чтобы использовать вместо команды встроенной в шелл. Но даже в таком случае, это не то чтобы сильно критично, потому что можно открывать несколько страниц манулов одним вызовом man.

--help для встроенных комманд

Есть мнение, что мануалы устарели и нужно просто в каждую программу вставлять возможность показать справку по --help. Мне это мнение не очень нравится, я с ним быть согласен на 100%. Хотя, с другой стороны, было бы круто вставлять --help после или перед остальными опциями командной строки в программе и показывать справку только по указанным опциям. Возможно, можно даже написать библиотеку на си, которая линковалась бы с программой и можно было бы таким образом получить что-то вроде explainshell, но для каждой отдельной программы.

Ну и да, по этой же логике, можно парсить --help у опция в shell, как и другие опции.

Вообще, прочитав вышеупомянутую заметку, стало немножко грустненько на счёт того, что происходит в линуксе и юникс-лайк системах с документацией.

Отсуствие и фрагментированность мануалов.

Хочется написать этот параграф, после вывода из предыдущего, а не из-за книги. Если раньше хотя бы можно было пожаловаться на плохое качество мануалов, то теперь можно говорить, что порой их именно, что не будет. А ещё произошла фрагментация:

  1. У нас есть самы мануалы.
  2. У нас есть GNU info.
  3. У нас есть краткие примеры с tldr.sh,которые можно было бы запихнуть в EXAMPLES секцию мануала.
  4. У нас есть command --help

Нет, избыточность документации это, наверное, само по себе хорошо. Но тут не то что нет избыточности и какой-нибудь проблемы, типа неакутальности документации в одном из многих мест. Просто число мест, которые нужно обойти, чтобы что-то почитать по теме множится.

Документация на функции ядра

Есть в OpenBSD, есть ещё в паре систем как мануалы в девятом разделе мануалов. Есть в линуксе как каталог doc/ в репозитории ядра.

По моим ощущением, в вопросе документации ядра и гайдов про то как писать драйверы для устройств сейчас дела обстоят как никогда хорошо.

На этом всё.