Копирование Команды /Bin/True

Среди всей этой шумихи по поводу авторских прав есть один забавный пример — чрезмерное использование авторских прав, которое AT&T породила где-то в 1980-х годах.

Речь идет о программе /bin/true. Это пустая программа, которая обычно используется только для записи бесконечных циклов (пока true do.) в сценариях оболочки.

«Настоящая» программа ничего не делает, а завершает работу с нулевым кодом.

Такого поведения легко добиться — достаточно создать пустой файл и сделать его исполняемым, что и сделали создатели первых Unix-систем.

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

Но юристы AT&T решили, что это не помешает защите авторских прав.

Самая старая версия /bin/true с авторскими правами, которую я нашел, датируется 1984 годом:

  
  
  
  
   

# Copyright (c) 1984 AT&T # All Rights Reserved # THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T # The copyright notice above does not evidence any # actual or intended publication of such source code. #ident "@(#)cmd/true.sh 50.1"

И это весь файл.

Обратите внимание, что здесь всего три пустые строки и комментарий (строка #ident указывает, что это за программа).

Да, вы правильно поняли; AT&T имеет авторские права на три пустые строки.

Итак, если в каком-либо из ваших файлов есть пустые строки, вы грубо нарушаете авторские права AT&T. Чтобы вы не подумали, что это просто случайность, которую быстро исправили, взгляните на программу /bin/true из Sys/V, которую AT&T выпустила в 1989 году:

# Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T # All Rights Reserved # THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T # The copyright notice above does not evidence any # actual or intended publication of such source code. #ident "@(#)true.sh 1.6 93/01/11 SMI" /* SVr4.0 1.4 */

Как видите, здесь по-прежнему ничего нет, кроме трех пустых строк и сообщения об авторских правах.

О, еще одна строка с #indent сообщает нам, что версия этой программы теперь 1.6. Кстати, поскольку я «публикую» целую программу AT&T, я беззастенчиво нарушаю их авторские права.

Я публично указывал на это на многочисленных технических форумах, начиная с 1980-х годов.

Юристы AT&T пока со мной не связались.

Кто-нибудь знает, почему они игнорируют такое вопиющее нарушение? В Linux такого нарушения нет, поскольку они используют скомпилированную версию /bin/true. Кстати, он работает гораздо быстрее, чем упомянутый шелл-скрипт, поскольку не запускает лишнюю программу (/bin/sh) только для ее немедленного выхода.

Именно по этой причине Linux быстрее Unix. И это улучшение неизбежно нужно было сделать, чтобы не нарушать авторские права AT&T ;-)

Добавление
AT&T — не единственная компания, которая занимается этим.

Вот та же программа от Solaris, 1993 года:

$ cat /usr/bin/true #!/usr/bin/sh # Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T # All Rights Reserved # THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T # The copyright notice above does not evidence any # actual or intended publication of such source code. #ident "@(#)true.sh 1.6 93/01/11 SMI" /* SVr4.0 1.4 */

Обратите внимание, что здесь на одну пустую строку меньше; он был заменен на «#!/usr/bin/sh».

В остальном программы идентичны.

The Sun просто оставил тот же комментарий.

Интересно, получила ли Sun письменное разрешение от AT&T на использование этих пустых строк? И еще меня немного сбивает с толку то, что Sun даже не заменила «AT&T» на «Sun Microsystems».

Может быть, их адвокаты решили, что этого делать не стоит? И ребята из GNU обошли эту проблему, повторно реализовав команду «true» на C. Мало того, что эта программа меньше и быстрее старого сценария, которому нужно запустить совершенно новый процесс, чтобы успешно ничего не сделать.

Они также добавили важные опции:

--help display this help and exit --version output version information and exit

Возможно, они добавили эти опции, чтобы нельзя было сказать, что они просто украли код у AT&T; В конце концов, версия GNU хоть что-то делает. Похоже, у ребят из GNU есть чувство юмора.

Ниже я скопировал сообщение из «true --version» на knoppix в 2007 году.

Обратите внимание, что это уже версия 5.94. Здесь написано, что на программу нет гарантии.

Видимо это означает, что если программа делает что-то, противоречащее ее прямому назначению, вы не можете подать в суд на автора.

Эта версия также делает кое-что очень «необычное»: сообщает нам имя ее автора.



$ /bin/true --version true (GNU coreutils) 5.94 Copyright (C) 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License .

There is NO WARRANTY, to the extent permitted by law. Written by Jim Meyering. $

Команда /bin/true (или /usr/bin/true) сегодня практически не используется, поскольку большинство оболочек просто заменяют ее встроенной командой.

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

Особенно забавно, что у GNU есть причины включать в свою версию авторские права.

Благодаря этому AT&T, Sun или SCO не могут взять код GNU, заявить, что он их собственный, а затем подать в суд на разработчиков Linux за якобы его нарушение.

Теги: #*nix #unix #настройка Linux #CLI #shell #юмор #история #история #команда #авторское право #сарказм

Вместе с данным постом часто просматривают: