1つのbashファイルに複数のシバン


8

私は他の人から見たスクリプトがあります(注:これは単一のファイルです)。

#!/bin/bash

some commands
some commands

#!/bin/bash

some commands
some commands

#!/bin/bash

some commands
some commands

2番目と3番目のシバンの目的は何ですか?それは間違っているのか、それとも故意ですか?


関係のない構成要素(ここではドキュメント)が前に#!/bin/bash付いて<<いますsome command <<end_of_script_flagか?
dan

構成はありません<<。単純なシバンといくつかの削除コマンド(これはアンインストールスクリプトでした)
Barat Sahdzijeu

スクリプトが連続して実行されるスクリプトからアセンブルされたか、ファイルが複数の独立したスクリプトに分割されるはずでしたが、分割が失敗した可能性があります。追加の#!行の直前は何ですか?
Gilles 'SO-邪悪なことをやめなさい'

@ギレス、私はそのスクリプトの余分な隠された目的はないと信じています。Uninstall.command(プラットフォーム:Mac OS X)という名前の静的スクリプトです。
Barat Sahdzijeu

回答:


9

これらの行が、ビルドされるインクルードシェルスクリプトの先頭でない場合、つまり、次の形式のスキーム内にある場合:

cat <<end_of_shell_script >dynamically_built_shell
#!/bin/bash
[...]
end_of_shell_script

そして、あなたが見つけ繰り返し構造は、多くの結果があるcopy- paste完全なシェルスクリプトではなく、十分なケアとスクリプトの1行目にこれらの非常に特別なコメントの使用が何であるかを理解せずに、始まります#!

そのようなシェルスクリプトを使用する前に注意してください(いいえsudo、いいえsu:))。


ところで、そこにはたくさんのsudoがあります... Jeezzz ...
Barat Sahdzijeu

/bin/rm(+ロボットに餌を与えるダミーのもの)!
dan

3
...またはsource、名前で-dした場合の実行方法と同様に、複数のbashスクリプトを組み合わせます。しかし、私は頭脳のコメントの必要性を見ていない。これは完全にこの方法で許容され、シバンがコメント行である理由です。
0xC0000022L

もう一度見てみると、他のいくつかの行が繰り返されていることに気付いたので、複数のスクリプトからの不注意なコピーと貼り付けであると思う傾向があります。
Barat Sahdzijeu

4

目的はありません。これらは単なるコメントです。「一部のコマンド」には、これを後で実行するために別のファイルに保存するコマンドが含まれている場合を除きます。


書き込み操作とその後の実行はありません。このスクリプトはrm、一部のアプリケーションのアンインストールを実行する一連の操作にすぎません。新しいシェルのフォークに関係しているのではないかと思いましたが、どうやらスクリプト作成者によるダーティコピーペーストでした。
Barat Sahdzijeu

@BaratSahdzijeuはrmのあるランダムなスクリプトに注意してください!キャップについてはお詫びしますが、それがどれほど重要であるかを強調することはできません。元の作者が正しい間違い(または、間違った間違い)をした場合、マシン上の他のソフトウェアに損傷を与え、OSを破壊することさえあります。
Nzall

ネイト、ありがとう!実際、そのシェルスクリプトは実行していません。Mac OS X(LinuxのようなOS)プラットフォームでアンインストーラーの学習ソースとして使用しました。おそらくそれはbashの特別なフレーバーを持っていると思いますが、これにはスクリプト内でシバンが繰り返されるという意味があります。
Barat Sahdzijeu

#!カーネルレベル(参照で同じ使用時man execve)任意のUnixシステム上(のOpenBSD、FreeBSDの、MacOS Xの、カーリー-Linuxの...)。bash単にコメントとしてこれを見るん。
dan

@NateKerkhofsそして、mv ln cp dd vi ...他の200のコマ​​ンドと一緒に何ですか?なぜあなたもそれらを強調していないのですか?彼らは取り残されたと感じるかもしれません。
ott-- 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.