./ を使用してスクリプトを実行することはできません。 [閉じる]

./ を使用してスクリプトを実行することはできません。 [閉じる]

私の仕事では、通常、次の構文を使用してLinuxサーバー上でスクリプトを実行します。

./<whatever absolute path to script>/<script>

明らかに、これは正しいユーザーと正しい権限で実行されると、通常スクリプトを実行します。

これで、最近サーバーにどのような変更が加えられたかはまったくわかりません。 SA はしばしば通知をまったく提供せず、アップグレード、パッチ、修正を管理します。問題は、最近同じ構文を使用してスクリプトを実行しようとすると、「スクリプトが見つかりません」のために実行が失敗することです。

回避策は、次の有効な構文を使用することです。

bash /<whatever absolute path to script>/<script>

私はSAまたはUnixサーバー構成の専門家ではありません。これらの問題が発生する理由と解決策を知っている人はいますか?

よろしくお願いします。

答え1

例で絶対パスを述べたように、次のコマンドを使用する必要があります。

/<whatever absolute path to script>/<script>

oa 点は相対パス検索を意味するためです (点は現在のディレクトリです)。使用ポイントは、現在のディレクトリが/(ルート)の場合にのみ有効です。

また、権限と実行フラグを確認してください。 Sorスクリプトでは読み取り権限も設定する必要があります。

答え2

ls -lスクリプトがあるディレクトリからスクリプトを実行して、スクリプトが「実行可能」であることを確認できます。出力の最初の列には、所有者、グループ、または他の人の「linux権限」が表示されます。

実行可能ビットがセットされたことを示す「x」が表示される。

-rwxr-xr-x

この例には 3 つがあるため、ファイル所有者、所有グループの全員、他のユーザーがファイルを実行できます。許可ビットの次のブログエントリが見つかりました。https://www.linuxfoundation.org/blog/blog/classic-sysadmin-understanding-linux-file-permissions

答え3

  • スクリプトが実行可能であることを確認してください。
    chmod +x <name of the script>
    
  • PATHどこでも実行するには、その場所に配置してください。パスを見つけるには、次の手順を実行します。
    echo $PATH
    

関連情報