BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Linuxシェルスクリプトの「#!」とは何ですか?

#! –通常、ニックネームは shebang シャバンハッシュバン poundbang –私たちはシバンに固執します この記事の期間中。

数え切れないほどのLinuxシェルスクリプトの冒頭にありますが、実際には何ですか?分解しましょう。

通常はこのように見えます

#!/bin/bash

#! ファイルの先頭、通常は最初の行に表示され、その後に実行可能ファイル(この場合は、 bash )へのパスが続きます。 シェル)。

コメントです

#、で始まります そのため、スクリプト自体の一部として実行されることはありません。ただし、スクリプトの動作には影響します。

インタプリタ指令を続行します

シバン インタプリタ実行可能ファイルへのパスを指定することにより、スクリプトの実行に使用するインタプリタをシステムに指示します。

  • 通常、ファイルの先頭の最初の行に配置されるため、正しいインタプリタがファイルの残りの部分を処理できます。
  • 指定するパスは絶対パスである必要があります 適切な実行可能ファイルに
  • シバンラインには、インタプリタに渡すことができるオプションが含まれている場合がありますが、これに対するサポートは環境によって異なります。オプションを1つだけ含めるのが最も安全です。

以下はいくつかの#! 例とその意味:

バッシュ

#!/bin/bash

スクリプトの先頭にこの行を配置すると、 bashを使用して実行する必要があることがシステムに通知されます。 シェル実行可能ファイル。

zsh

#!/bin/zsh

スクリプトの先頭にこの行を配置すると、 zshを使用して実行する必要があることがシステムに通知されます。 シェル実行可能ファイル。

bashの違いに関する記事を読む およびzsh ここに!

Python

#!/usr/bin/env python3

Python 3を使用してスクリプトを実行します。ここでは、 python3へのパスを指定するのではなく注意してください。 実行可能ファイルの場合、この行は、ユーザーの環境に対して現在定義されているpython3実行可能ファイルを検索します。

何もありません!

#!/bin/false

失敗ステータスコードを返し、スクリプトを実行しません。直接実行することを目的としていないスクリプトで使用されます。

#をバイパスする!

#!を使用してスクリプトを実行している場合 そのように:

./myscript.sh

こちらmyscript.sh スクリプトの名前です– shebang 使用するインタプリタを決定するために使用されます。

上記は、現在のユーザーが実行しているスクリプトでのみ実行できます。 許可。

ただし、次のことを行う場合:

bash myscript.sh

シバン 行はない 呼び出すために使用されるコマンドでbashを指定したため、使用するインタープリターを決定するために使用されます。スクリプトは実行されていないため、これを行うにはスクリプトの読み取り権限のみが必要です。 bash 実行中です。


  1. Linuxシェルと基本的なシェルスクリプト言語のヒントを理解する–パートI

    写真は言葉以上のものを話し、下の写真は Linuxの動作についてすべてを示しています 。 また読む シェルプログラミングを学ぶための5つのシェルスクリプト–パートII Linux BASHスクリプティングの世界を航海する–パートIII Linuxシェルについて シェル :ユーザーをオペレーティングシステムに接続するコマンドラインインタプリタ コマンドを実行したり、テキストスクリプトを作成したりできます。 プロセス :ユーザーがシステムで実行するタスクはすべてプロセスと呼ばれます。プロセスは単なるタスクよりも少し複雑です。 ファイル :ハードディスク上にあります( hdd

  2. シェルスクリプトで構文チェックのデバッグモードを実行する方法

    シェルスクリプトのデバッグシリーズは、さまざまなデバッグオプションと、シェルスクリプトのデバッグモードを有効にする方法を説明することから始めました。 シェルスクリプトを作成した後は、スクリプトの出力を調べて正しく機能していることを確認するのではなく、スクリプトを実行する前に、スクリプトの構文を実際に確認することをお勧めします。 シリーズのこのパートでは、構文チェックのデバッグモードの使用方法について説明します。このシリーズの最初のパートでさまざまなデバッグオプションについて説明したことを思い出してください。ここでは、それらを使用してスクリプトのデバッグを実行します。 詳細デバッグモードの有