シェルスクリプトを呼び出すときのshと./の違いは何ですか? [コピー]

シェルスクリプトを呼び出すときのshと./の違いは何ですか? [コピー]

人々が入力してシェルスクリプトを実行するのを見たことがあります./scriptname。今はこれが基本的な方法のようです。かなり頻繁に見えますが、時々sh scriptname。それは単に好みの問題ですか、それとも2つの間にもっと重要な違いがありますか?./そしてシェン

ベストアンサー1

いくつかの違いがあります。

./scriptname

呼び出しファイルはscriptname実行可能で、最初の行(「shebang」で)で指定されたシェルを使用する必要があります。例えば #!/bin/sh)、もしそうなら。

sh scriptname

scriptname呼び出されるファイルを読み取ることができる限り動作し、shスクリプトの shebang が指定するものが何であっても使用されます。一部のシェルでは、scriptname現在のディレクトリに存在しない場合に指定されたディレクトリが検索され、そこに見つかった最初のディレクトリ(存在する場合)が読み取られ、解釈されます。PATHscriptname

言い換えれば、

sh scriptname

設定なしで動作しますが、誤ったシェルを使用しているか、間違ったスクリプトを実行している可能性があります。

./scriptname

正しいシェル(または少なくともスクリプト作成者が指定したシェル(存在する場合))を使用して正しいスクリプトを実行しようとしますが、最初にいくつかの設定が必要になる場合があります(chmod a+x scriptname)。

おすすめ記事