シェルスクリプトの最初の行はどういう意味ですか?その行を作成しないとどうなりますか?では、スクリプトをどのように実行しますか?
答え1
最初の行(shebangと呼ばれる)は、ファイルを実行するためにどのインタプリタを使用する必要があるかを示します。 「関連性」とマークされたSteeldriverの答えは、何を期待しているのかをより詳細に伝えます。
だから始めると
#!/bin/bash
bash
このファイルを解釈するために使用されます。他の一般的なランチャーは#!/usr/bin/perl
またはです#!/usr/bin/python
。ただし、tst
ファイルを生成する場合はこれに限定されません。
#!/usr/bin/vi
jantje zag eens pruimen hangen
oh als eieren zo groot
、ファイルを実行可能にして(chmod +x tst
)実行すると、(./tst
)ファイルを編集するためにviが起動します。
質問の次の部分は、最初の行にshebangがないとどうなるかです。答えは、現在使用されている通訳者が使用されているということです。デモ:ファイルを作成するtst
:
ps -f
(shebangはなく、1行だけ)実行可能ファイルを作成し(chmod +x tst
)実行します(./tst
)。結果は次のようになります。
ljm@phi:~$ ./tst
UID PID PPID C STIME TTY TIME CMD
ljm 1379 1377 0 Oct06 pts/3 00:00:00 -bash
ljm 20769 1379 0 10:34 pts/3 00:00:00 -bash
ljm 20770 20769 0 10:34 pts/3 00:00:00 ps -f
(1379は現在シェルで、20769は解釈のためのbashtst
なので、psの親(PPID)です。)
aを起動してやり直すsh
と、tst
次のようになります。
ljm@phi:~$ sh
$ ./tst
UID PID PPID C STIME TTY TIME CMD
ljm 1379 1377 0 Oct06 pts/3 00:00:00 -bash
ljm 20773 1379 0 10:34 pts/3 00:00:00 sh
ljm 20774 20773 0 10:34 pts/3 00:00:00 /bin/sh ./tst
ljm 20775 20774 0 10:34 pts/3 00:00:00 ps -f
$
それではsh
説明しますtst
。
答え2
それでは、Shebangなしでスクリプトをどのように実行しますか?
ファイル(例:tst)にインポートすると、実行もできません。
source tst
. tst
(これらはbuitinsです - > help source
)
または
bash tst
これは次のようになります。
bash -c 'string of commands aka script'
これらの言語ソルバーと「コマンドストリーム」のマッチングは、Perl、sed、awkでもさまざまな方法で使用されます。