Ich möchte einfach eine ausführbare Datei über die Befehlszeile ausführen ./arm-mingw32ce-g++
, erhalte dann aber die Fehlermeldung:
bash: ./arm-mingw32ce-g++: No such file or directory
Ich verwende Ubuntu Linux 10.10. ls -l
Listen
-rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++
Mit sudo ( sudo ./arm-mingw32ce-g++
) gibt
sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory
Ich habe keine Ahnung, warum das Betriebssystem die Datei nicht einmal sehen kann, wenn sie dort ist. Irgendwelche Gedanken?
quelle
not a dynamic executable
(bevor ich ia32-libs installiert habe).ia32-libs-*
ist in Ubuntu 16.04 veraltet, installierenlib32ncurses5
undlib32z1
stattdessen.Ich hatte diesen Fehler, als ich versuchte, eine Selenium-Quelle unter Ubuntu zu erstellen. Das einfache Shell-Skript mit korrektem Shebang konnte nicht ausgeführt werden, selbst nachdem alle Voraussetzungen abgedeckt waren.
Ich habe die Datei in Vim geöffnet und konnte sehen, dass diese Datei, nur nachdem ich sie einmal auf einem Windows-Computer bearbeitet hatte, im DOS-Format war. Ich habe die Datei mit dem folgenden Befehl in das Unix-Format konvertiert:
Ich hoffe, dass wir uns bei der plattformübergreifenden Bearbeitung von Dateien auch um die Dateiformate kümmern sollten.
quelle
Dieser Fehler kann auch auftreten, wenn versucht wird, ein Skript auszuführen, und der Shebang falsch geschrieben ist. Stellen Sie sicher
#!/bin/sh
, dass es liest#!/bin/bash
oder welchen Interpreter Sie verwenden.quelle
./my/full/path/myscript
statt./myscript
.Ich hatte die gleiche Fehlermeldung beim Versuch, ein Python-Skript auszuführen - dies war nicht der beabsichtigte Anwendungsfall von @ Warpspace (siehe andere Kommentare), aber dies war einer der Top-Treffer meiner Suche, sodass es vielleicht jemand nützlich finden wird.
In meinem Fall waren es die DOS-Zeilenenden (
\r\n
anstelle von\n
), über die die Shebang-Zeile (#!/usr/bin/env python
) stolpern würde. Eine einfachedos2unix myfile.py
Lösung.quelle
Ich habe den gleichen Fehler für ein einfaches Bash-Skript erhalten, das keine 32/64-Bit-Probleme hätte. Dies liegt möglicherweise daran, dass das Skript, das Sie ausführen möchten, einen Fehler enthält. Dieser Ubuntu-Forumsbeitrag weist darauf hin, dass Sie mit normalen Skriptdateien 'sh' vorne hinzufügen können und möglicherweise eine Debug-Ausgabe erhalten. z.B
und sehen Sie, ob Sie eine Ausgabe erhalten.
In meinem Fall bestand das eigentliche Problem darin, dass die Datei, die ich ausführen wollte, im Windows-Format und nicht unter Linux war.
quelle
Ich habe diesen Fehler erhalten,
“No such file or directory”
aber er existiert, weil meine Datei unter Windows erstellt wurde und ich versucht habe, sie unter Ubuntu auszuführen. Die Datei enthielt ungültige 15 \ r, wo immer eine neue Zeile vorhanden war. Ich habe gerade eine neue Datei erstellt, in der unerwünschte Inhalte abgeschnitten werdenquelle
Der folgende Befehl funktionierte unter 16.4 Ubuntu
Dieses Problem tritt auf, wenn Ihre .sh-Datei beschädigt oder nicht gemäß Unix-Protokollen formatiert ist.
dos2unix konvertiert die .sh-Datei in das Unix-Format!
quelle
Ich hatte das gleiche Problem mit einer Datei, die ich auf meinem Mac erstellt habe. Wenn ich versuche, es in einer Shell mit ./Dateiname auszuführen, wird die Fehlermeldung Datei nicht gefunden angezeigt. Ich denke, dass etwas mit der Datei nicht stimmte.
was ich getan habe:
Öffnen Sie eine SSH - Sitzung an den Server
cat Dateinamen
kopieren Sie die Ausgabe in die Zwischenablage
rm Dateiname
Touch Dateiname
vi Dateiname
i für Insert - Modus
den Inhalt aus der Zwischenablage einfügen
ESC Endeinsatzes Modus
: wq!
Das hat bei mir funktioniert.
quelle
Ich hatte gerade dieses Problem in
mingw32 bash
. Ich hatte node / npm von ausgeführtProgram Files (x86)\nodejs
und sie dann in eindisabled
Verzeichnis verschoben (im Wesentlichen aus dem Pfad entfernt). Ich hatte auchProgram Files\nodejs
(dh 64-Bit-Version) im Pfad, aber erst nach der x86-Version. Nach dem Neustart der Bash-Shell konnte die 64-Bit-Version von npm gefunden werden.node
funktionierte die ganze Zeit korrekt (überprüft,node -v
dass dies geändert wurde, als die x86-Version verschoben wurde).Ich denke, es
bash -r
hätte funktioniert, anstatt bash neu zu starten: https://unix.stackexchange.com/a/5610quelle
Wie von anderen erwähnt, liegt dies daran, dass der Loader nicht gefunden werden kann, nicht Ihre ausführbare Datei. Leider ist die Nachricht nicht klar genug.
Sie können das Problem beheben, indem Sie den von Ihrer ausführbaren Datei verwendeten Loader ändern. Meine ausführliche Antwort finden Sie in dieser anderen Frage: Mehrere glibc-Bibliotheken auf einem einzelnen Host
Grundsätzlich müssen Sie herausfinden, welchen Loader er verwenden möchte:
Suchen Sie dann den richtigen Pfad für einen äquivalenten Loader und ändern Sie Ihre ausführbare Datei so, dass der Loader aus dem Pfad verwendet wird, der er wirklich ist:
Sie müssen wahrscheinlich auch den Pfad der Includes festlegen. Sie werden wissen, ob Sie dies möchten oder nicht, nachdem Sie versucht haben, es auszuführen. Alle Details in diesem anderen Thread anzeigen.
quelle
Ich habe hier meine Lösung für mein Ubuntu 18 gefunden .
Dann:
quelle
Ich hatte dieses Problem und der Grund war EOL in einigen Editoren wie Notepad ++. Sie können dies im Menü Bearbeiten / EOL-Konvertierung überprüfen. Unix (LF) sollte ausgewählt sein. Ich hoffe es wäre nützlich.
quelle
Hier hinzugefügt, um später darauf zurückgreifen zu können (für Benutzer, die möglicherweise in denselben Fall fallen): Dieser Fehler tritt auf, wenn Sie unter Windows arbeiten (das zusätzliche Zeichen aufgrund eines anderen Zeilentrennzeichens als das Linux-System einführt) und versuchen, dieses Skript auszuführen (wobei zusätzliche Zeichen eingefügt werden). unter Linux. Die Fehlermeldung ist irreführend.
In Windows ist das Zeilentrennzeichen CRLF ( \ r \ n ), während es unter Linux LF ( \ n ) ist. Dies kann normalerweise im Texteditor gewählt werden.
In meinem Fall geschah dies aufgrund der Arbeit unter Windows und des Hochladens auf den Unix-Server zur Ausführung.
quelle
scriptdir=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
dann gestartet,cd $scriptdir || exit 1
aber die\r
in meiner Windows-bearbeitete Datei wurde an denscriptdir
Wert angehängt . Die Nachricht: no such file or directory
war also höchst verwirrend, da sie das löschte, worüber sie sich beschwerte.