Почему `.` был выбран для представления команды точка?

8

Мне интересно, увидев этот вопрос, почему .символ был выбран для представления команды точка ?

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

jesse_b
источник
2
Вы пытались спросить Стивена Борна?
Шили
1
@schily: он не был доступен для чата
jesse_b
8
Потому что было бы глупо называть «%» «точечной командой».
Игнасио Васкес-Абрамс
1
@slm: Правильно, почему .использовался для представления команды точка (источник)? Это связано с .тем, что текущий каталог?
jesse_b
1
@Rob: Нет, это не так.
jesse_b

Ответы:

7

Самое раннее упоминание о команде «точка», которую я могу найти, содержится в руководстве по shоболочке Стивена Борна в Unix Release 7 (оно может быть более старым, но явно не представлено как одна из встроенных команд shв Release 6 ).

. file  Read and execute commands from file and return.  The search path
        $PATH is used to find the directory containing file.

Точка, в довольно общих терминах, кажется, была связана с «здесь» или «текущим». .Каталог является текущим каталогом , а также .адрес в adbотладчике из того же выпуска Unix был .адрес , который был текущий адрес . Аналогично, при вводе .новой строки в edредакторе будет отображаться текущая строка буфера редактирования ( .адрес текущей строки). Точка также означает текущий узел в определенных языках структурированных запросов для XML, JSON, YAML и т. Д. (Хотя это более поздние изобретения).

Поэтому, я думаю, не слишком уместно предположить, что .команда в оболочке также означает «здесь» или «текущая». В частности, «запустите этот скрипт в текущей среде ».

Точка также довольно быстро и легко печатать, и иметь короткую команду для ведения общей задачи (будь то в ed, adbили в оболочке) , возможно, еще одна причина , почему другое имя больше не используется.


Обратите внимание , что у меня нет функционирующего версии shот версии 7 для тестирования вещей в, и что я не могу найти фактическую реализацию в. в оболочке Борна с этого выпуска в вышеупомянутом Git репозитории, так что я не могу сказать , наверняка, что он действительно сделал именно то, что он делает сегодня. Но вполне вероятно, что так и было.

Кусалананда
источник
+1. Спасибо за этот длинный ответ. Кстати, есть ли разница между точкой и источником при использовании для запуска команд из файла: по . scriptfileсравнению source scriptfileс bash? Другими словами, это два имени одной встроенной команды?
Судодус
@sudodus Они эквивалентны. У этой sourceкоманды другая история, поскольку она унаследована от csh.
Кусалананда