Warum wird der Name des MAKEDEV-Skripts in Großbuchstaben geschrieben?
7
Während normalerweise alle Linux-Befehle in Kleinbuchstaben geschrieben sind, ist dies beim MAKEDEVSkript in Großbuchstaben nicht der Fall . Gibt es einen Grund dafür?
Vielleicht würde es nie jemand versehentlich ausführen?
DarkHeart
Antworten:
9
Es ist wahrscheinlich, dass Linux dieses Skript von einem bereits vorhandenen Unix ausgeliehen hat.
Die früheste Version dieses Skripts, die ich finden konnte, heißt /dev/MAKEBSD 4 , das meiner Meinung nach aus der Zeit um 1980 stammt. Es wird offensichtlich so benannt, weil es die Gerätedateien erstellt. Das obere Gehäuse des Namens bestand möglicherweise darin, ihn von den Gerätedateien selbst zu unterscheiden, aber das ist spekulativ.
Davor scheinen die Gerätedateien mit einem tatsächlichen Makefile erstellt worden zu sein, wie im Bell Labs Research V7-Snapshot (1979) , und davor bin ich mir nicht sicher, ob die /devHierarchie überhaupt existiert.
In der BSD 4.4 Lite2-Version (1995 laut Repository, aber der SCCS-Zeitstempel in der Datei selbst sagt es 8.1 (Berkeley) 6/9/93) können wir das Skript mit seinem endgültigen Namen /dev/MAKEDEVzusammen mit einigen systemspezifischen MAKEDEVSkripten sehen. Zu diesem Zeitpunkt existiert das Skript auf der Linux-Seite bereits mit demselben Namen ( wie von Stephen Kitt erwähnt ).
Ich fragte mich, ob es von irgendwo anders kam, ich dachte nicht daran, mir die BSDs oder die Unix-Geschichte anzuschauen!
Stephen Kitt
Nur ein Streitpunkt zu Ihrer Bearbeitung: Die Zuordnungen zu Bill Joy und Ken Thompson sind die Standardeinstellungen für BSD 4 und V7 und entsprechen keinen festen Informationen ( Einzelheiten finden Sie in diesen Dateien ). Auch der 4.1c_2 MAKEDEV.localist leer (obwohl der wichtige Teil sein Name ist).
Stephen Kitt
@ StephenKitt Danke Stephen! Ja, die Datei ist leer, aber vorhanden. Ich gehe davon aus, dass es viele andere Dateien gibt, die aus verschiedenen Gründen entweder leer oder nicht vorhanden sind (Lizenzen?).
Kusalananda
@ StephenKitt Die genauen Daten sind auch ein bisschen wackelig, wie es scheint.
Kusalananda
2
Ja, die Daten stimmen nicht unbedingt überein. Die Daten in den Kopfzeilen der Revisionskontrolle in den Dateien selbst geben eine Vorstellung davon, wie alt sie sind. Diomidis Spinellis hat einiges darüber geschrieben, wie das Repository zusammengesetzt ist. Es ist eine interessante Lektüre (für Leute, die sich für die Geschichte all dieser Dinge interessieren!). Die TUHS-Mailingliste enthält auch einige Informationen.
Stephen Kitt
7
Soweit ich feststellen kann, ist dies die Geschichte von MAKEDEVunter Linux:
Im März 1992 fügte Jim Winstead einen Installationshelfer in Version 0.95a seiner Root-Diskette mit dem Namen hinzu /INSTALL/mkdev.
im Juli 1992 wurde dies /dev/MAKEDEVin Version 0.96 der Root-Diskette;
Bis Dezember 1993 hat Nick Holloway dies in einem speziellen MAKEDEV-Projekt erweitert (Version 1.2 scheint die erste öffentlich veröffentlichte Version zu sein).
Der Schlüssel zum Namen des Skripts ist also der Wechsel von /INSTALL/mkdevzu /dev/MAKEDEV. Ich würde vermuten, dass es in Großbuchstaben geschrieben wurde, um mögliche Verwechslungen und Namespace-Konflikte mit Geräteknotennamen zu vermeiden, da diese (immer?) Mit einem Kleinbuchstaben beginnen. Dies war lange vor der FHS, als Binärdateien an verschiedenen Orten (einschließlich /etc) lebten , sodass es /devsinnvoll genug war , ein Skript zur Erstellung von Geräteknoten zu haben.
Ah, wir sind uns einig über den möglichen Grund für das Großbuchstaben des Dateinamens. Ja, Geräteknoten wurden immer in Kleinbuchstaben geschrieben. In der Tat ist es nur sehr wenige alte Dateien mit allen Großbuchstaben in ihnen, und wenn es in Großbuchstaben ist , ist es vor allem für Aufmerksamkeit: READ_MEetc. Oder vielleicht für in Dateilisten zu sortieren.
Kusalananda
MAKEDEVfast ein Jahrzehnt vor Linux.
Jlliagre
Wenn Sie den Dateinamen einer Datei bis etwa 2010 mit einem ASCII-Großbuchstaben beginnen, wird sie an den Anfang einer Verzeichnisliste sortiert. Dies wird in den Konventionen für Quellcode- "Releases" häufig verwendet: README, Makefile, COPYING, ChangeLog usw. sollten sich alle am Anfang der Liste befinden, gefolgt vom eigentlichen Code (in Dateien, die mit Kleinbuchstaben beginnen). Leider wurde diese Konvention gebrochen, als die C-Bibliotheksbetreuer entschieden, dass die meisten Leute wahrscheinlich eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung von strcoll () wünschen. Sie sind nicht falsch , aber ...
Antworten:
Es ist wahrscheinlich, dass Linux dieses Skript von einem bereits vorhandenen Unix ausgeliehen hat.
Die früheste Version dieses Skripts, die ich finden konnte, heißt
/dev/MAKE
BSD 4 , das meiner Meinung nach aus der Zeit um 1980 stammt. Es wird offensichtlich so benannt, weil es die Gerätedateien erstellt. Das obere Gehäuse des Namens bestand möglicherweise darin, ihn von den Gerätedateien selbst zu unterscheiden, aber das ist spekulativ.Davor scheinen die Gerätedateien mit einem tatsächlichen Makefile erstellt worden zu sein, wie im Bell Labs Research V7-Snapshot (1979) , und davor bin ich mir nicht sicher, ob die
/dev
Hierarchie überhaupt existiert.Mit BSD 4.1 (1982) wurde dieses Skript noch aufgerufen
/dev/MAKE
, aber in BSD 4.1c_2 (1983) scheint es ein/dev/MAKEDEV.local
Skript mit einer Beschreibung gegeben zu haben. Es ist nicht klar, ob es jemals ein/dev/MAKEDEV
Skript daneben gab.In der BSD 4.4 Lite2-Version (1995 laut Repository, aber der SCCS-Zeitstempel in der Datei selbst sagt es
8.1 (Berkeley) 6/9/93
) können wir das Skript mit seinem endgültigen Namen/dev/MAKEDEV
zusammen mit einigen systemspezifischenMAKEDEV
Skripten sehen. Zu diesem Zeitpunkt existiert das Skript auf der Linux-Seite bereits mit demselben Namen ( wie von Stephen Kitt erwähnt ).quelle
MAKEDEV.local
ist leer (obwohl der wichtige Teil sein Name ist).Soweit ich feststellen kann, ist dies die Geschichte von
MAKEDEV
unter Linux:/INSTALL/mkdev
./dev/MAKEDEV
in Version 0.96 der Root-Diskette;Der Schlüssel zum Namen des Skripts ist also der Wechsel von
/INSTALL/mkdev
zu/dev/MAKEDEV
. Ich würde vermuten, dass es in Großbuchstaben geschrieben wurde, um mögliche Verwechslungen und Namespace-Konflikte mit Geräteknotennamen zu vermeiden, da diese (immer?) Mit einem Kleinbuchstaben beginnen. Dies war lange vor der FHS, als Binärdateien an verschiedenen Orten (einschließlich/etc
) lebten , sodass es/dev
sinnvoll genug war , ein Skript zur Erstellung von Geräteknoten zu haben.quelle
READ_ME
etc. Oder vielleicht für in Dateilisten zu sortieren.MAKEDEV
fast ein Jahrzehnt vor Linux.