回答:
ファイルを所有していることが確かでない限り、これを先に実行してください。
次のいずれかの方法で実行しようとしているファイルを所有していることを確認してください。
ターミナルでこのコマンドを実行します
[ ! -O "/path/to/file" ] && echo "You don't own the file"
You don't own the file
」が表示される場合は、以下の「ファイルの所有権を変更する」を参照してください。ターミナルでこのコマンドを実行します
sudo chown $USER:$(id -gn $USER) "/path/to/file"
私が見つかり答えたコメントによってLekensteynに答えのための質問についてchmod
、私はそれ自身の質問と回答、Lekensteynへの完全な信用に値すると思うNTFSパーティション上。
次のコマンドを実行可能ファイルに使用します(/path/to/executable
正しいパスで置き換えます):
64ビットの実行可能ファイル:
/lib64/ld-linux-x86-64.so.2 /path/to/executable
32ビットの実行可能ファイル:
/lib/ld-linux.so.2 /path/to/executable
上記が機能しない(またはファイルが見つからないというエラーが発生する)場合は、上記のコマンドの前にこれを使用してみてください
cd "$(dirname /path/to/executable)"
上記のコマンドはすべて、テキストベースのスクリプト(Bash、Python、Perlなど)では機能しません。以下を参照してください。
このコマンドを使用して、実行可能ファイルが32(x86
)または64(x86-64
)ビットかどうかを確認します
objdump -f "$file" | grep '^architecture' | cut -d, -f1 | sed 's/architecture: //'
と表示されている場合、それはi386:x86-64
64ビットです。i386
ただ言うなら、それは32ビットです。
テキストベースのスクリプト(などバッシュやPython、Perlや)のために、あなたは最初に指定されたコマンドを使用する必要があり#!
、ファイル内の行を。
たとえば、ファイルの最初の行が
#!/usr/bin/env python3
次に、ターミナルでこれらのコマンドを実行します(/path/to/file
正しいパスで置き換えます)
cd "$(dirname /path/to/file)" # Not strictly necessary, see section below
# Replace '/usr/bin/env python3' with the first line without the front #!
/usr/bin/env python3 /path/to/file # Use './file' if you want
.jar
ファイルJava実行可能jarの場合、これらのコマンドを使用するだけです(/path/to/jar
正しいパスで置き換えます)。
cd "$(dirname /path/to/jar)" # Not strictly necessary, see section below
java -jar /path/to/jar
cd "$(dirname /path/to/file)"
これらはcd "$(dirname /path/to/file)"
、何らかの方法でプログラムを実行する前に使用する必要のない可能性のある状況ですcd
。
apt-get
)cd
任意のファイル操作(例:実行する前に絶対パスを変更する(または同等品)cd "$(dirname "$0")"
)./
、または全くスラッシュで始まります)不明な場合cd "$(dirname "$0")"
は、スクリプトの先頭に追加(または同等のもの)(該当する場合)するか、cd "$(dirname /path/to/file)"
とにかく使用します。
シェルスクリプトの場合は、別のシェルスクリプトから「ソース」できます。
#!/bin/bash
# This script runs another script indirectly, by sucking in its contents and evaluating inline:
source /path/to/script/which/lost/its/exec/flag "$@"
「$ @」は、必要に応じてコマンドラインパラメータを追加します。
そうは言っても、これはおそらく根本的な問題の最善の解決策ではありませんが、代替案を提供するためにその問題について十分に知りません。
bash script $@