まったく同じ権限を持つ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を実行します。
- Pythonスクリプトの場合は、#!/usr/bin/env pythonを追加する必要があります。 bashの場合は、#!/usr/bin/env bashなどを追加する必要があります。