.sh bashスクリプトの最初は
#!/bin/bash
これは、コマンドインターピーターの実行可能ファイルを指します。
しかし、Google Python Class http://www.youtube.com/watch?v=tKTZoB2Vjukを見ていたときに、Pythonでは
#!/usr/bin/python -tt
。インターネットをサーフィンする私もこの表記のそのようなスタイルを見つけました:
#!/usr/local/bin/python
そして
#!/usr/bin/env python
。
それで、私はPythonが初めてで、普通のLinuxユーザーであり、この「魔法」の行についていくつか質問があります。
本当に面白いです。この線は何ですか?なぜこの線なのか?この行の書き方は?なぜそのように?...
質問1)ラインはシバンと呼ばれ、普遍的に機能する正しい形式はありません。例えば
#!python
#!/usr/bin/python
#!/usr/local/bin/python
#!/usr/bin/python -t
すべて有効/許容可能な形式ですが、システムによっては機能しない場合があります。
#!python
Python実行可能ファイルがシェルのPATHのどこかにある場合にのみ機能します
#!/usr/bin/python
Pythonバイナリが実際に/ usr / binにある場合にのみ機能します
#!/usr/local/bin/python
また、pythonが/ usr / local / binにある場合にのみ機能します
質問2)
#!/usr/bin/python -tt
-tt
あなたがしたかのように、Pythonにオプションを渡しています:
$ python -t somescript.py
シェルプロンプトで。シバン行のインタープリターに任意のコマンド行引数を渡すことができます。
質問3)
この行は、現在使用しているOSカーネルとシェルによって解釈されます。の後の#!
部分は、スクリプトの残りの部分を「実行」するために起動する必要があるプログラムをOSに通知するだけです。
質問#4)
スクリプトの構文は、使用している言語によって異なります。たとえば、PHPシェルスクリプトは、
#!/usr/bin/php
<?php
... php code here ...
#!/usr/bin/perl
perlのスクリプトでは、PerlのシェバングでPHPコードを入れる場合はPHPのコードがあるとして、あなただけのPerlは、構文エラーでスクリプトを嘔吐しているよ...等、Perlの構文を使用する必要がありませ perlのコード
質問5)
シバンはUnixシステム用であり、ファイル拡張子を使用してOSがファイルタイプを識別することはありませんでした。.c
ファイルは、C言語のソースコードファイルであることを理解し、それは単に慣例だました。Bashシェルスクリプトを.c
ファイルに入れて実行可能にし、#!/bin/bash
シバンを使用すると、Bashスクリプトとして実行されます。
ファイル拡張子によって実行可能タイプを決定することは、Windowsのものです。
質問6)
これは問題1に関連しています。シバンがインタープリターが現在のパスとは別のパスにあると主張している場合、シバンが修正されるか、インタープリターが移動されるまで、この特定のスクリプトは実行できません。シバンは非常に便利ですが、間違いありません。
ありがたいことに、最近ではほとんどのインタープリターがかなり標準的な場所にインストールされているので、Perlが(たとえば)の/some/wonky/weird/path
代わりにインストールされているのを見つけるのは少し珍しいでしょう。/usr/bin
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加