shar(ファイル形式)

シャー
原作者ジェームズ・ゴスリング
開発者さまざまなオープンソースおよび商用開発者
オペレーティング·システムUnixUnixライクVMSWindows
タイプ指示
シャー
ファイル名拡張子
.shar
フォーマットの種類アーカイブ形式シェルスクリプト
オープンフォーマット?はい[ 1 ]

Unixオペレーティングシステムにおいて、shar(「シェルアーカイブ」に由来)はUnixユーティリティで作成されるアーカイブ形式sharです。sharファイルは自己解凍型アーカイブの一種で、有効なシェルスクリプトであり、実行するとファイルが再作成されます。ファイルの解凍には、通常、標準的なUnix Bourneシェルであるshのみが必要です。

sharファイルは「sharchives」(「/bin/sh archive」から)と呼ばれることもあります。[ 2 ]

shar コマンドはSingle Unix Specificationで指定されていないため、正式には Unix のコンポーネントではなく、レガシー ユーティリティであることに注意してください。

詳細

shar形式はプレーンテキストであるという利点があるが、実行可能であるというリスクを伴う。[ 3 ]このため、テキストファイルの転送でも、通常はより古く汎用性の高いtarファイル形式が好まれる。GNUGNU Sharutilsコレクションで独自のsharバージョンを提供している。

unsharプログラムは他のオペレーティング システム向けにも作成されていますが、必ずしも信頼できるわけではありません。shar ファイルはシェル スクリプトであり、理論的にはシェル スクリプトで実行できることはすべて実行できます (拡張シェルや類似シェルの非互換機能の使用を含む)。そのため、Unix 環境以外ではその有用性が制限されます。

自己解凍型シェルスクリプト(sharに限らずあらゆる種類)の欠点は、特定のプログラム実装に依存する可能性があることです。古いバージョンのmakeselfで作成されたシェルアーカイブ([ 4 ]たとえば、オリジナルのUnreal Tournamenttrap for Linuxインストーラー)は、組み込みコマンドへの引数が不足している場合の処理​​方法の変更により、bash 3.xでは実行できません。

歴史と変種

ジェームズ・ゴスリングは1982年にsharユーティリティの最初のバージョンを書いたとされています[ 1 ]:§1。 また、この概念の初期の例(1978-79年とされる)を、次のような単純なシェルスクリプトの形で書きました:[ 5 ] [ 6 ] [ 7 ]

# shar -- シェル アーカイバAR = $1 shift for i do echo a - $i echo "echo x - $i " >> $AR echo "cat > $i <<'!Funky!Stuff!'" >> $AR cat $i >> $AR echo "!Funky!Stuff!" >> $AR done

シャーには以下の亜種が知られている: [ 8 ]

  • shar 1.x (1982) ゴスリング作。パブリックドメインのシェルスクリプト
  • shar2またはxshar (1988)、William Davidsen 著。パブリックドメイン、Cプログラム。
    • shar3 (1989) ウォーレン・タッカー著。
      • shar 3.49 (1990)、Richard H. Gumpertz による。uuencodeサポートを追加。
        • 現在のGNU sharutils。GPLv3 C プログラム。
  • cshar (1984)、Michael A. Thompson と Mark Smith によるもの。現在は bitrot により失われています。C プログラム。
  • cshar (1988)リッチ・ザルツ著、Cプログラム。shar 3.49 の影響を受けていた可能性が高い。
    • ccshar (1996) は、cshスクリプトを出力するように修正されたものです。Usenetではほとんど使用されていません。

GNUは、一般的なGNU UnixライクなユーティリティのネイティブWin32ポートであるUnxUtilsコレクションの一部として、Microsoft Windowsshar用の個別のパッケージとして利用可能です。 [ 9 ]

類似のフォーマット

同じコンセプトのVMSオペレーティングシステム用のバージョンが、 1987年にメルボルン応用経済社会研究所のマイケル・ベドナレクによってDCLスクリプトVMS_SHAR.COMとして作成されました。[ 10 ]これは後にゼロックスのジェームズ・A・グレイ[ 11 ]とキングス・カレッジ・ロンドンのアンディ・ハーパーによって保守・拡張されました。[ 12 ] [ 13 ]

makeself (2001–) は、シェルスクリプトのヘッダー技術を用いて自己解凍型のtarball ( *.runapplication/x-makeself) を生成するシェルスクリプトです。tar を使用するため、makeself をプレーンテキストで直接使用することはできませんが、優れた圧縮率などの機能により、21世紀には Linux ソフトウェアのパッケージ化を目指すソフトウェアベンダーの間で人気が高まっています。[ 14 ]

参照

参考文献

  1. ^ a b「GNU 'shar'ユーティリティ」 gnu.org .フリーソフトウェア財団. 2019年12月8日閲覧
  2. ^ "sharchive" . ftp.informatik.rwth-aachen.de . 2024年1月2日閲覧。
  3. ^ Apple (1993-06-06). 「Mac OS X shar(1) Man Page」 . Apple. 2009年11月7日時点のオリジナルよりアーカイブ。 2009年11月7日閲覧
  4. ^ "makeself "trap" コマンドの修正" . Svn.icculus.org. 2000年11月20日. 2012年7月14日時点のオリジナルよりアーカイブ2011年8月30日閲覧。
  5. ^ uw-beave!jim (1983年4月2日). 「Re: xlisp配布ファイルを分割するプログラム」 .ニュースグループnet.sources . メッセージID:bnews.uw-beave.451 . 2017年3月27日閲覧。
  6. ^ 「shar: a blast from the past」 . James Gosling: on the Java Road . 2017年3月27日時点のオリジナルよりアーカイブ。 2017年3月26日閲覧
  7. ^ほぼ同じスクリプト「bundle」が、カーニハンとパイクの「UNIXプログラミング環境」(1984年)の97ページに記載されている。
  8. ^ Dickey, Thomas E. 「Shar/Utils に関するコメント」 . invisible-island.net .
  9. ^いくつかのGNUユーティリティのネイティブWin32ポート
  10. ^ Michael Bednarek (1987年6月9日). 「VMS用のshar(一種の)」 .ニュースグループcomp.os.vms . Usenet: [email protected] . 2024年9月4日閲覧。 
  11. ^ Jim Gray (1988年5月8日). 「VMS_SHARE V6.0」 .ニュースグループcomp.os.vms . Usenet: 880508-073131-5929@Xerox . 2024年9月4日閲覧。 
  12. ^ Andy Harper (1989年7月7日). 「VMS_SHARE バージョン7」 .ニュースグループcomp.os.vms . Usenet: [email protected] . 2024年9月4日閲覧。 
  13. ^ Andy Harper (1995年7月6日). 「VMS_SHARE 8.5 を発表」 .ニュースグループvmsnet.sources.d . Usenet: [email protected] . 2024年9月4日閲覧。 
  14. ^ "makeself – Unix 上で自己解凍型アーカイブを作成する" .