2

ここにいる誰かが私を助けてくれるかもしれません。2 台のマシンに Ubuntu 12.04 LTS (kubuntu) をインストールしました。.bashrcおよびファイルは、.bash_profile各マシンのファイル構造が同じであるため、同一です。

マシン 1で: ターミナル ウィンドウ内で bash スクリプトを簡単に実行します。./scriptname.sh

マシン 2 : これを行うことはできず、使用する必要があります:また、スクリプト ファイル名sh scriptname.sh を使用してタブで補完することもできません。./

すべての実行可能ビットが正しく設定されており、すべてのファイルとフォルダーに適切な権限があります。スクリプトのヘッダーで、シバンが正しく設定されています。

なぜこれが発生するのでしょうか?

でスクリプトを実行しようとすると./file_motion_grab.sh

bash: ./file_motion_grab.sh: Permission denied

を試すとls -l、次のようになります。

-rwxrwxrwx 1 adelie adelie 351 Nov 4 20:32 file_motion_grab.sh

の出力getfaclは次のとおりです。

# file: file_motion_grab.sh
# owner: adelie
# group: adelie
user::rwx
group::rwx
other::rwx

より一般的 - 2 番目のマシンで新しいスクリプトを起動するには、次のコマンドを使用する必要があります。 sh scriptname.sh .bash ファイルに何か問題がある可能性があります。しかし、どこを見ればよいかわかりません。

4

1 に答える 1

1

ls -alファイルとディレクトリのアクセス許可を確認することをお勧めします。また、getfacl file.sh通常の Unix パーミッション ビットをオーバーライドする ACL パーミッションが存在する場合があるため、 も試してください。

次にhead -n 1 file.sh | xxd、最初の行を見て、シバンがファイルの最初の 2 文字として適切に存在することを確認します。場合によっては、Unicode BOM などの隠し文字が原因で正しく解釈されないことがあります。

次に、シェル自体のアクセス許可を確認します。ls -l /bin/bashgetfacl /bin/bash。また、これが他のインタープリターで発生するかどうかも確認します。#!/bin/shスクリプトに使用できますか?#!/bin/python(またはPerl、Ruby、またはそのようなもの)?これが唯一のシェルで発生するのか、他のシェルで発生するのかを区別する/bin/bashことは役に立ちます。

また、ls /proc/sys/fs/binfmt_miscシェル スクリプトの通常の解釈を妨げる可能性のあるバイナリ形式が構成されていないかどうかを確認してください。

別のアカウントからもテストしてみてください (可能であれば)。問題はあなたのアカウントに固有のものですか? 問題を引き起こしている一時的な破損がある場合に備えて、再起動も試みます(可能であれば)。

(答えはもともと一連のコメントでした)

于 2012-11-05T02:07:38.820 に答える