Ksh

Kornshell 語法中的#@(#) 是什麼

  • July 29, 2014

我正在查看 AIX 框上的一個腳本,其中有幾行以#@(#)

這說明什麼?顯然,Google搜尋對於符號是完全沒有結果的。

以下是腳本中的行:

#!/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.

奇怪的字元串“@(#)”其實是古代SCCS版本控制系統使用的。具體來說,該what命令將查看文件(二進製或文本)並找到以“@(#)”開頭的以 ASCII-Nul 結尾的字元串,並將該字元串列印出來。這允許您在“.o”文件和最終的執行檔中嵌入可列印的 ASCII 版本號,這樣您就可以知道哪些文件的哪些版本最終在執行檔中。

我認為RCSident命令具有類似的功能。

前導的 ‘#’ 確實使該行的其餘部分成為ksh註釋,所以我的猜測是某些項目編寫了所有ksh腳本,以便 SCCSwhat命令列印出腳本的所有用法等。

引用自:https://unix.stackexchange.com/questions/147266