Was ist # @ (#) in der Kornshell-Syntax?

6

Ich schaue mir ein Skript auf einer AIX-Box an, in der mehrere Zeilen beginnen #@(#)

Was bedeutet das? Es ist klar, dass eine Google-Suche für Symbole völlig fruchtlos ist.

Hier sind die Zeilen aus dem Skript:

#!/usr/bin/ksh
#
#@(#)
#@(#) USAGE: dump_master_db [opts] SERVER [AREA]
#@(#)  opts: -p PAGENAME : send Pages to PAGENAME rather than the default (usually database)
#@(#)        -nodbcc     : will not do the DBCCs before the dump
#@(#)                     -c COMPRESSION_LEVEL : dump the database at the stated compression level.
#@(#)
#@(#) This script will do some DBCCs, truncates the log and then dumps the master database on any SERVER
#@(#) The SERVER parm is used to build the logical device name as follows:
#@(#)     SERVER_master_dump
#@(#) NOTE: There is no AREA and no stripes for this dump device.
#@(#)       COMPRESSION: VALUES 1 (least) to 9 (most compressed).
#@(#)       Currently, we only use values of none  to 1.
Max Vernon
quelle

Antworten:

8

Die seltsame Zeichenfolge "@ (#)" wird tatsächlich vom alten SCCS-Versionskontrollsystem verwendet . Insbesondere durchsucht der whatBefehl eine Datei (Binärdatei oder Textdatei) nach ASCII-Nul-terminierten Zeichenfolgen, die mit "@ (#)" beginnen, und druckt diese Zeichenfolge aus. Auf diese Weise konnten Sie druckbare ASCII-Versionsnummern in ".o" -Dateien und letztendlich in ausführbare Dateien einbetten, sodass Sie feststellen konnten, welche Versionen welcher Dateien in der ausführbaren Datei landeten.

Ich denke, dass der RCS- identBefehl eine ähnliche Funktion hatte.

Das führende '#' macht den Rest der Zeile zu einem kshKommentar, so dass ich vermute, dass einige Projekte alle ihre kshSkripte geschrieben haben, damit ein SCCS- whatBefehl die gesamte Verwendung usw. für die Skripte ausgibt.

Bruce Ediger
quelle
danke für diese tolle antwort. Schätzen Sie, dass Sie sich die Zeit genommen haben, diese Referenzlinks zu finden.
Max Vernon
1
@MaxVernon - gern geschehen. Ich persönlich liebe diese Art von Fragen, da sie einer breiteren Gemeinschaft tatsächliche Praktiken aufzeigen und es mir ermöglichen, mein Gedächtnis für die Absurditäten abzurufen, die es bewahrt hat. Wenn ich redaktionell bearbeiten könnte: "@ (#)" hat mich in der Vergangenheit einige Male in Produktionsumgebungen von High Ritual gerettet. Warum hat es nicht überlebt? Zu wissen, welche Versionen zusammengestellt wurden, scheint eine wertvolle Information zu sein.
Bruce Ediger
Es sieht so aus, als ob Sie absolut korrekt sind. Die Skripte verwenden den whatBefehl, um die Verwendung auf der Konsole auszudrucken.
Max Vernon
"SCCS version control system" == "Versionskontrollsystem für Quellcode"
Lily Chung