シェルスクリプトの実行

シェルスクリプトの実行

まったく同じ権限を持つ2つのシェルスクリプトファイルがあります。 1つはコマンドラインに名前を付けて実行できますが、もう1つはshまたは./を使用して実行する必要があります。なぜですか?

答え1

両方のスクリプトが異なるディレクトリにある可能性が高いです。ディレクトリの1つはPATHにあり、もう1つはそうではありません。

このtypeコマンドを使用して、現在のシェルの$ PATHにファイルがあるかどうかをテストできます。

$ type start_dropbox.bash
start_dropbox.bash is /home/saml/bin/start_dropbox.bash

このU&L Q&Aをご覧ください。」$PATHにアプリケーションがあるかどうかをテストする方法は?より包括的な報道をしたい。

答え2

スクリプト名のみを指定して機能する場合は、/usr/bin/ /usr/sbinまたは他の場所に配置できます。それはすべてパス設定によって異なります。

これを行う:

1. echo $PATH

スクリプトがこれらのディレクトリの1つにある場合は、絶対パスを使用せずに実行されます。

2. whereis "scripts name"

Whereisまたは「which」は、それがどこにあるかを教えてくれます。あるファイルには実行権限を与えたが、別のファイルには実行権限を与えていない可能性がある。プログラムを名前以上の名前で実行するには、chmod u + xを実行します。

  1. Pythonスクリプトの場合は、#!/usr/bin/env pythonを追加する必要があります。 bashの場合は、#!/usr/bin/env bashなどを追加する必要があります。

関連情報