Linuxでシェルスクリプトを実行するには二つの方法があります。 あなたが使用することができます:
bash script.sh
または、次のようにシェルスクリプトを実行できます:
./script.sh
それは簡単かもしれませんが、それは多くを説明しません。 シェルスクリプトの実行中に特定の構文が指定された形式で使用される理由を理解できるように、例を挙げて必要な説明を行います。
私は物事をできるだけ複雑にするために、この一行のシェルスクリプトを使用するつもりです:
:~/Scripts$ cat hello.sh echo "Hello World!"
方法1:shell
に引数としてファイルを渡してシェルスクリプトを実行する最初の方法では、スクリプトファイル名を引数としてシェルに渡します。
bashがデフォルトのシェルであることを考慮すると、次のようなスクリプトを実行できます:
bash hello.sh
このアプローチの利点を知っていますか? スクリプトにexecute権限は必要ありません。 迅速かつ簡単なタスクのために非常に便利。
あなたはすでに慣れていない場合は、私はLinuxでのファイルの許可に関する私の詳細なガイドを読むことをお勧めします。
引数として渡すシェルスクリプトである必要があることに注意してください。 シェルスクリプトはコマンドで構成されます。 通常のテキストファイルを使用すると、誤ったコマンドについて不平を言うでしょう。
この方法では、スクリプトのインタプリタとしてbashを使用するように明示的に指定しました。
Shellは単なるプログラムであり、bashはその実装です。 Ksh、zshなどのような他のシェルプログラムがあります。 他のシェルがインストールされている場合は、bashの代わりにそれを使用することもできます。
たとえば、zshをインストールし、同じスクリプトを実行するために使用しました:
推奨される読み取り:
方法2:パスを指定してシェルスクリプトを実行する
シェルスクリプトを実行するもう1つの方法は、パスを指定することです。 しかし、それを可能にするには、ファイルが実行可能でなければなりません。 それ以外の場合は、スクリプトを実行しようとすると、”許可が拒否されました”エラーが表示されます。
最初に、スクリプトにexecute権限があることを確認する必要があります。 Chmodコマンドを使用して、次のように自分自身にこの権限を与えることができます:
chmod u+x script.sh
スクリプトが実行可能になったら、ファイル名とその絶対パスまたは相対パスを入力するだけです。 ほとんどの場合、同じディレクトリにいるので、次のように使用します:
./script.sh
スクリプトと同じディレクトリにない場合は、スクリプトへの絶対パスまたは相対パスを指定できます:
それ。/スクリプトが重要になる前に(スクリプトと同じディレクトリにいるとき)
同じディレクトリにいるときにスクリプト名を使用できないのはなぜですか? これは、LinuxシステムがPATH変数で指定されているいくつかの選択されたディレクトリで実行する実行可能ファイルを探すためです。
私のシステムのPATH変数の値は次のとおりです:
:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
つまり、次のいずれかのディレクトリにある実行権限を持つファイルは、システム内の任意の場所から実行できます:
- /ホーム/abhishek/.usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin
ls、catなどのlinuxコマンドのバイナリまたは実行可能ファイルは、これらのディレクトリのいずれかにあります。 これが、名前を使用するだけで、システム上の任意の場所からこれらのコマンドを実行できる理由です。 参照、lsコマンドは/usr/binディレクトリにあります。
絶対パスまたは相対パスを指定せずにスクリプトを指定すると、PATH変数に記載されているディレクトリにスクリプトが見つかりません。
ほとんどのシェルスクリプトに#! シェルスクリプトの先頭に/bin/bash?
シェルは単なるプログラムであり、シェルの実装が異なることをどのように述べたかを覚えておいてください。
#!を使用すると、次のようになります。 /bin/bashでは、スクリプトがインタプリタとしてbashで実行されることを指定しています。 あなたがそれをしてスクリプトを実行しない場合。/スクリプト。shの方法では、通常、実行しているシェルで実行されます。
それは問題ですか? それは可能性があります。 参照してください、シェル構文のほとんどはすべての種類のシェルで共通ですが、いくつかは異なる場合があります。
たとえば、bashシェルとzshシェルでは配列の動作が異なります。 Zshでは、配列インデックスは0ではなく1から始まります。
#! /bin/bashは、スクリプトがbashシェルスクリプトであり、システムで使用されているシェルに関係なく、bashをインタプリタとして実行する必要があることを示 Zsh固有の構文を使用している場合は、#!を追加することでzshスクリプトであることを示すことができます。 スクリプトの最初の行として/bin/zsh。
#の間のスペース! /bin/bashは問題ではありません。 #を使用することもできます!/bin/bash。
参考になりましたか?
私はこの記事があなたのLinuxの知識に追加されたことを願っています。 あなたはまだ質問や提案がある場合は、コメントを残してください。
専門家のユーザーはまだ私が逃したことについてこの記事をnitpickすることができます。 しかし、このような初心者のトピックの問題は、情報の適切なバランスを見つけて、あまりにも多くのまたはあまりにも少数の詳細を避けることは容易ではないということです。
bashスクリプトの学習に興味がある場合は、sysadminに焦点を当てたウェブサイトLinux HandbookにBash初心者シリーズ全体があります。 あなたがしたい場合は、また、Linuxハンドブックをサポートするための追加の演習で電子ブックを購入することができます。
あなたが読んだもののように? 他の人と共有してください。
- Facebook0
- Twitter49
- Linkedin1
- Reddit0