私は見たこのウェブサイトのこの質問これが私にこのような質問をさせました。 Unix言語では、実行可能ファイルとシェルスクリプトの違いが何であるかを知りたいです。
答え1
実行可能ファイルは、実行ビットを設定して実行できるすべてのファイルです(プログラムが実際に実行されたときにエラーが発生しても)。
シェルスクリプトは特定タイプ#!
インタプリタを指定するディレクティブを使用してシェルで解釈されるように作成された実行可能ファイル。
答え2
ㅏスクリプトファイルです:
- 人が読める必要があります(少なくとも合理的に訓練された人、つまりファイルが印刷可能な文字で構成されている)。
- 次のように理解される通訳プログラムの動作を説明するガイドラインです。
ㅏシェルスクリプト通訳は次のスクリプトです。シェル。 UNIXの世界では、「シェル」とは次のことを意味します。ボンシェル;現代のシェル(ash、bash、ksh、zshなど)は以下に従います。POSIXシェル標準。より一般的には、「シェル」という用語には、csh、tcsh、fish...などの他のコマンドソルバーが含まれます。
一つ実行可能ファイル実行可能ファイルです。効率的に実行するには、ファイルに2つの属性が必要です。
- ユーザーにこれを実行する権限が必要です。これは次のコマンドで確認できます
ls -l
。このx
文字は権限列に表示する必要があります。 ファイルは、システムが実行可能ファイルとして認識できる形式でなければなりません。実行可能ファイル形式は、いくつかのカテゴリに分けることができます。
- デフォルトの実行可能ファイルは、オペレーティングシステムのバイナリ実行可能ファイルのレイアウトに従って構成された機械語コードで構成されています。ほとんどの最新のUNIXシステムでは非常に低い周波数デフォルトの実行可能ファイルの形式です。
- スクリプト。実行可能なスクリプトはシェルボーン
#!
2文字の後にファイルパスが続く行で構成されています。これらのファイルを実行するために、カーネルはインタプリタを実行し、スクリプトパスを引数として渡します。 - システムによっては異なる形式にすることもできます。たとえば、Linuxは次のように任意のファイル形式を登録できます。binfmt_misc施設。これにより、Javaバイトコードファイルを登録されたパスを介して実行できます。仮想デバイス、Windowsの実行可能ファイルワイン、等。
実行可能性はシステムによって異なります。たとえば、amd64 Linuxバイナリはamd64 Linuxシステムで実行できますが、32ビットシステムでは実行できません。 Androidバイナリは通常のLinuxインストールでは実行できません。 Wineがある場合、Windowsの実行可能ファイルはLinux上でのみ実行できます。#!/usr/local/bin/ruby
で始まるスクリプトは、にプログラムがある場合にのみ実行可能です/usr/local/bin/ruby
。
シェルスクリプトは通常実行可能です。ただし、実行権限がないと実行できない可能性があります。たとえば、明示的にインタプリタに渡して解釈できますbash /path/to/script
。 「解釈する」は「実行する」を意味する素晴らしい方法です。
答え3
シェルスクリプト:
シェルスクリプトは、シェル(通常はshまたはsh互換のシェル、時には他のシェル)によって解釈される一連のコマンドです。
スクリプト名は「.sh」、「.bash」、「.csh」などで終わることができますが、必ずしもそうではありません。 (これはスクリプトを起動する必要があるシェルを表します)
わかりやすくするために、スクリプト名は、script
開始する必要があるシェルはと仮定しますbash
。
シェルから始まる一般的な方法はbash /absolute/path/to/the/script
またはですbash ./relative/path/to/the/script
。これにより、実行ビットを設定する必要がなくなります。なぜなら、bashでのみ読んで実行できるからです。
それできる+x(実行ファイル)は、現在のシェルセッションで直接実行するように設定することもできます。/absolute/path/to/the/script(または./relative/path/to/the/script)。注:デフォルトでは、この方法で起動すると、ユーザーが入力したシェルから起動します。またはposixシェルを介して(動作はOSによって異なります)、実行する必要があるシェルではない可能性があります。これがスクリプトの最初の行に #!/path/to/good/shell を指定でき、指定する必要がある理由です。これは、スクリプトが実際に /path/to/good/ で起動する必要があることをオペレーティングシステムに示します。シェル。
実行可能ファイル:
実行可能ファイルは、実行する必要があるユーザー/グループに「x」ビットが設定されたファイルです。通常、「バイナリ」またはスクリプトです。
ヒント:file /some/file
ファイルの内容に関する詳細情報を教えてください。いくつかの例を試してみfile /usr/bin/bash
て file /etc/profile
ください。