Bash gibt ENOENT zurück, wenn versucht wird, eine vorhandene Binärdatei auszuführen

3

Ich habe ein Rust-Build-Skript, das ich für ein Projekt ausführen muss, an dem ich mitarbeite. Cargo versucht, das Skript vor dem Haupterstellungsprozess auszuführen, schlägt jedoch fehl. Deshalb habe ich versucht, es auszuführen:

$ ./build-script-build
bash: ./build-script-build: No such file or directory

Die Datei ist jedoch eindeutig vorhanden:

$ file build-script-build
build-script-build: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, not stripped

Und ich habe Berechtigungen:

$ stat -c %A build-script-build
-rwxr-xr-x

strace zeigt folgendes:

$ strace ./build-script-build
execve("./build-script-build", ["./build-script-build"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
write(2, "strace: exec: No such file or di"..., 40) = 40
exit_group(1)                           = ?
+++ exited with 1 +++

Ich weiß, dass dieses Problem bei ausführbaren 32-Bit-Dateien auf 64-Bit-Systemen auftreten kann , aber file zeigt, dass es 64-Bit ist. Was vermisse ich?

Das ist an Linux 4.8.13-1-ARCH x86_64, Apropos.

Cormac O'Brien
quelle
Ich bin neugierig: Was passiert, wenn Sie 1. mit dem vollen Pfad geradeaus rennen, 2. von einem anderen Ort aus (z. B. / tmp) ziehen und rennen?
sage