基本的には、tarアーカイブなど、ある種の圧縮されたアーカイブの前に置かれたシェルスクリプトです。 tail
またはsed
コマンド(Bourneシェルの変数$0
)を使用して、前面のシェルスクリプトを取り除き、残りの部分をunarchiverに渡します。
#!/bin/sh -e
sed -e '1,/^exit$/d' "$0" | tar xzf - && ./project/Setup
exit
sed
コマンドは、上記の「出口」で始まる最初のものへのファイルの最初の行からのすべての行を削除し、次に渡し:
たとえば、self-extracting
として次のスクリプトを作成しますスルーしてください。 "exit"行がtarファイルの直後に開始するものがある場合は、tar
コマンドがそれを抽出します。成功した場合は、./project/Setup
ファイル(おそらくタールボールから抽出されたもの)が実行されます。その後
:
mkdir project
echo "#!/bin/sh" > project/Setup
echo "echo This is the setup script!" >> project/Setup
chmod +x project/Setup
tar czf - project >> self-extracting
あなたは古いproject
ディレクトリを取り除く場合さて、あなたはself-extracting
を実行することができ、それはそのtarファイルを抽出し、設定スクリプトを実行します。
私はCurtの答えを選んだのですが、プロセスを説明するツールを指すのではなく、その説明をしたからです。 Seb、James、Nikありがとうございました。 –