Cygwin-Fehler – „/bin/bash“ konnte nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

Cygwin-Fehler – „/bin/bash“ konnte nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

Ich habe Cygwin gerade heruntergeladen und unter Windows 7 installiert. Die Installation scheint erfolgreich gewesen zu sein, denn der C:\Cygwin64Ordner enthält 1,2 GB an Daten, während der Installationsordner, aus dem ich es installiert habe, knapp 300 MB groß war. Wenn ich jedoch auf die Desktopverknüpfung klicke, wird geöffnet mintty.exe, und der folgende Fehler wird angezeigt:

„/bin/bash“ konnte nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

Und das, obwohl ich alle Basisdateien installiert habe, die bashangeblich Teil davon waren – und selbst wenn nicht, hat das Installationsprogramm sie später als erforderliches Paket angezeigt und sie selbst installiert. Hat also irgendjemand eine Ahnung, was hier los ist? Dies ist vielleicht mein vierter Versuch am letzten Tag, eine erfolgreiche Installation von Cygwin hinzubekommen; ich fange an zu denken, dass ich es einfach nicht haben sollte.

Antwort1

Ich habe es geschafft, das Problem mit einer weiteren Installation zu lösen - dieses Mal habe ich mich für den Download und die Installation aus dem Internet entschieden (Option 1 im Installationsprogramm), anstatt die Dateien einzeln herunterzuladen und aus dem lokal gespeicherten Ordner zu installieren (Optionen 2 und 3). Ich bin mir nicht sicher, warum die Auswahl dieser Optionen zu einer unvollständigen Installation geführt hat, aber jetzt kann ich sie bashohne Fehler ausführen.

Antwort2

Ich hatte das gleiche Problem nach einer Standard-Neuinstallation direkt aus dem Internet.

Ich habe es gelöst, indem ich zu „C:\cygwin64\bin“ gegangen bin, „ash.exe“ dupliziert und die Kopie in „bash.exe“ umbenannt habe.

(Ich habe dies rein zufällig versucht, nur weil Bash fehlte und ich diese ominöse Ash-Datei fand)

Antwort3

Das Problem

Wenn Sie möchten, können Sie nach unten springen und sich die beiden Lösungen ansehen, insbesondere die zweite, die bei mir funktioniert hat.

Ich bin gerade auf dieses Problem gestoßen, nachdem ich einen beschädigten Teil meines Computers wiederhergestellt hatte (nachdem das System32Verzeichnis beschädigt worden war – igitt!). So etwas war schon einmal passiert (aufgrund anderer Umstände), und ich hatte das C:\cygwin64Verzeichnis mit den Ordnern und zumindest einigen anderen Dateien noch immer dort.

Vorher konnte ich die Installation immer einfach durch Ausführen neu installieren setup-x86_64.exe(ich habe meine in eingegeben C:\cygwin64). Danach bashwäre ich wieder da. Ich führe dies immer mit der Online-Option durch, https://mirrors.kernel.orgaber selbst wenn ich nur bashin der Installations-GUI auswähle, trat dieses Problem auf, obwohl mein Fehler als angezeigt wurde

/bin/bash: Exit 126.
Failed to run '/bin/bash': No such file or directory

Cygwin-Terminal (Emulator) mit dem oben angegebenen Text, z. B. „/bin/bash: Exit 126. Fehler beim Ausführen von ‚/bin/bash‘: Keine solche Datei oder kein solches Verzeichnis“

Die Überprüfung meines binVerzeichnisses zeigte, dass es tatsächlich bashfehlte. Von der Eingabeaufforderung ( CMD)

C:\Windows\System32>C:\cygwin64\Cygwin
'bash' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>dir C:\cygwin64\bin\bas*
 Volume in drive C is ██████████
 Volume Serial Number is ██████████

 Directory of C:\cygwin64\bin

File Not Found

C:\cygwin64\bin>

Beachten Sie, dass ich Cygwin normalerweise folgendermaßen ausführe:

  1. Verwenden Sie die Desktopverknüpfung. Dies entspricht dem Ausführen des folgenden Befehls in der (Windows-)Eingabeaufforderung.
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

oder

  1. Verwenden der Cygwin.batDatei. Ich zeige zuerst den Dateiinhalt und dann die Ergebnisse meiner Versuche, sie auszuführen.
C:\Windows\System32>type C:\cygwin64\Cygwin.bat
@echo off

C:
chdir C:\cygwin64\bin

bash --login -i

C:\Windows\System32>C:\cygwin64\Cygwin
'bash' is not recognized as an internal or external command,
operable program or batch file.

C:\cygwin64\bin>

Erster (erfolgloser) Lösungsversuch

Findenbash-<version>.tar.xz

Ich hatte vorher von heruntergeladen https://mirrors.kernel.org, also hatte ich einen Ordner,

C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f

Als ich ein bisschen weiter herumstöberte, fand ich ein Tarball bash-4.4.12-3.tar.xznamens

C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash

den vollständigen Pfad erstellen

C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash\bash-4.4.12-3.tar.xz

Ich habe es schließlich eröffnet mit7zip, obwohl Sie verwenden könntenWinRARoder etwas ähnliches.

(Ich habe mich ein bisschen darüber ausgelassen, wie es tarjetzt unter Windows verfügbar ist, aber die Verwendung hat bei der Extraktion nicht funktioniert. Sie können die Schimpftirade sehenHiertarwenn Sie mehr über und nativ auf Windows 10 erfahren möchten curl) Ich habe das Tarball auf den Desktop kopiert/eingefügt, dann mit der rechten Maustaste geklickt und zweimal „Erweitern auf“ gewählt, um an den Inhalt zu gelangen. Ich habe das alles in

C:\Users\bballdave025\Desktop\bash-4.4.12-3\

An diesem Punkt konnte ich mir ansehen, was darin war.Anschließend habe ich die Speicherorte der darin enthaltenen Dateien mit den Speicherorten der Dateien auf einem Computer verglichen, auf dem Cygwin funktionierte.Ich konnte alle Dateien finden und wollte sie dann einfach an die entsprechenden Positionen verschieben.

Für einige andere Leute, vielleicht einige ausgit bash(wiedieses Poster)(archiviert) oder mingw/ msys2(wiedieses Poster) (archiviert), beachten Sie, dass mein Fehler besagt, dass das System nicht finden konnte /bin/bash– anders als die Art und Weise, wie Ihre Fehler verweisen /usr/bin/bash, es wird also einige Unterschiede geben.

C:\Users\bballdave025\Desktop\bash-4.4.12-3>tree /a /f .
Folder PATH listing for volume ██████████ OS
Volume serial number is ██████████ ██████████
C:\USERS\BBALLDAVE025\DESKTOP\BASH-4.4.12-3
|
+---etc               \   . On the working computer's version, I found
|   \---postinstall    }-' C:\cygwin64\etc\postinstall\bash.sh.done
|           bash.sh   /   I'm going to move the file from where you
|                       see it to _my_ C:\cygwin64\etc\postinstall.sh
|                     Then I'll run it, and if the tests pass, I'll
|                   rename it to bash.sh.done . I'll do that after
|                 moving all the others.
|
\---usr                 
    +---bin              
    |       bash.exe     \     
    |       bashbug       }---  I'll move these three files into 
    |       sh.exe       /      _my_  C:\cygwin64\bin   FIRST (1)
    |
    +---include
    |   \---bash                      \    . I'll move this bash
    |           <lots of *.h files>    }--' directory and all its
    |                                 /  constituent header (*.h)
    |                                  files to _my_ directory,
    |                                      C:\cygwin64\usr\include\
    |
    +---lib
    |       libbash.dll.a  }- I'll move this one file to _my_
    |                     /                         C:\cygwin64\lib\
    |
    |
    |                                          \
    \---share                                   \
        +---doc                                  :
        |   +---bash                              \
        |   |   +---<lots of bash doc stuff>       :
        |   |                                      |
        |   \---Cygwin                             : 
        |           bash.README                    |   .-I'll put the
        |                                      _.-'  _/ doc, info,
        +---info                              /   _-'  locale, and
        |       bash.info.gz                  \_/'  man directories
        |                                   --'   in _my_
        |                                  /  C:\cygdrive64\usr\share\
        +---locale                         `--------...____   directory,  
        |   +---<lots of locales which have the same  >    :  which is 
        |   |   <structure underneath; the last locale>   /  where they
        |   |   <(serving as an example) is below     >  :  were in the
        |   \---zh_TW                                   /   working
        |       \---LC_MESSAGES                        /    version.
        |               bash.mo                       /
        |                                            :
        \---man                                     /
            \---man1                               :
                    <lots of PROGRAM.gz files>    /
                                                 /                              

Ja, ich hoffe, dass ich zurückkomme, aber ich möchte einen Teil dieser Antwort hochladen und speichern.

Zweite Lösung

Das ist mir bei einer Freundin passiert. Ein Administrator hatte ihr Konto eingerichtet und der Administrator hatte „seine Haken“ darin gelassen, was bedeutete, dass er eine Art Eigentumsrecht besaß. Da dieser Administrator nicht mehr bei uns arbeitete, mussten wir einen Weg finden, alles wieder in Ordnung zu bringen.

Zuerst haben wir versucht, alles zu löschen, aber es gab immer ein paar Dateien und Ordner, die wir nicht loswerden konnten – sie gehörten diesem Administrator (der übrigens ein wirklich netter Kerl ist). Wir konnten nicht einmal löschen, wenn wir den Löschvorgang als Administrator ausführten ( File Manager -> C -> Windows -> explorer.exe, Rechtsklick, dann „Als Administrator ausführen“, in das C:\cygwin64Verzeichnis gehen und versuchen zu löschen ... keine Chance. )

Um die Dinge endlich zum Laufen zu bringen, mussten wir als Administrator die Berechtigungen für das Basisverzeichnis und alle anderen Verzeichnisse ändern. Danach konnten wir das C:\cygwinVerzeichnis löschen, neu erstellen, setup-86_64.exein das neue cygwin64Verzeichnis einfügen und dann das Setup ausführen. SiedürfenbashVersuchen Sie, einfach die Berechtigungen für das gesamte Verzeichnis zu ändern und dann mit der GUI erneut zu installieren setup-x86_64.exe, aber als ich das versuchte und dann zum Cygwin-Terminal ging, bekam ich so etwas.

bballdave025@MY_MACHINE ~
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
--2020-04-26 13:08:26--  https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.68.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.68.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13765 (13K) [text/plain]
apt-cyg: Permission denied

Cannot write to ‘apt-cyg’ (Permission denied).

bballdave025@MY_MACHINE ~
$ stat .
  File: .
  Size: 0               Blocks: 24         IO Block: ██████████  directory
Device: ██████████/██████████   Inode: ██████████  Links: 1
Access: (0575/dr-xrwxr-x)  Uid: (██████████/   bballdave025)   Gid: (██████████/Unknown+Group)
Access: 2020-03-25 06:44:06.256806800 █████
Modify: 2020-03-25 06:44:04.686424000 █████
Change: 2020-04-26 09:23:47.452255300 █████
 Birth: 2019-12-26 12:34:40.017177300 █████

bballdave025@MY_MACHINE ~
$ stat /
  File: /
  Size: 0               Blocks: 4          IO Block: ██████████  directory
Device: ██████████/██████████   Inode: ██████████  Links: 1
Access: (0775/drwxrwxr-x)  Uid: (██████████/   bballdave025)   Gid: (██████████/Unknown+Group)
Access: 2020-04-26 09:34:23.227577100 █████
Modify: 2020-04-26 09:34:23.227577100 █████
Change: 2020-04-26 12:55:46.658249200 █████
 Birth: 2019-06-25 06:49:31.485205900 █████

bballdave025@MY_MACHINE ~
$ chmod u+w .
chmod: changing permissions of '.': Permission denied

bballdave025@MY_MACHINE ~
$ # It's not going to be very useful like this.

Führte übrigens auch chmod -R u+w /zu vielen Fehlern.Permission denied

WENN SIE DATEIEN WIEDERHERSTELLEN MÜSSEN, HABEN SIE JETZT WAHRSCHEINLICH DIE ZWEITBESTE CHANCE, DIES ZU TUN.

Eine Möglichkeit zum Löschen besteht darin, den Anweisungen von zu folgen.dieses Appuals-Tutorial(archiviert). Sie benötigen Administratorrechte, um CMDals Administrator ausgeführt zu werden.

Sie können dies auch mit dem Windows Explorer tun, aber Sie müssen den Explorer wahrscheinlich als Administrator ausführen. Ich habe auch versucht, die Berechtigungen auf diese Weise zu ändern, aber ohne Erfolg.

Suchen Sie im Typmenü nach cmdund führen Sie es dann als Administrator aus. Siehe Screenshot unten.

Schritte zum Ausführen von CMD als Administrator

In Besitz nehmen

takeown /r /d y /f C:\cygwin64

Beachten Sie, dass die beiden Bestandteile des Befehls 'TAKE OWN' und nicht 'TAKE DOWN' sind. Beachten Sie auch, dass dieser Befehl wahrscheinlich lange dauern wird, in der Größenordnung von 5-20 Minuten für meinenfast vollständige Installation(archiviert).

Als Nächstes erteilen wir jedem die vollen Berechtigungen.

icacls C:\cygwin64 /t /grant Everyone:F

Wir könnten noch einmal versuchen, zurückzugehen und die Installation/Neuinstallation durchzuführen bash, aber die Sicherheitsimplikationen dessen, was gerade getan wurde, gefallen mir nicht.

WENN SIE DATEIEN WIEDERHERSTELLEN MÜSSEN, HABEN SIE JETZT WAHRSCHEINLICH DIE ZWEITBESTE CHANCE, DIES ZU TUN. Ich meine, wenn Sie an diesem Punkt die Installation oder Neuinstallation bashüber die setup-x86_64GUI durchführen oder sogar einfach den Windows-Datei-Explorer verwenden, ist dies Ihre beste Chance.

Ich würde diesen Cygwin lieber einfach löschen und eine neue Installation durchführen. WENN SIE VERSUCHT HABEN, ALLE MÖGLICHEN DATEIEN WIEDERHERZUSTELLEN, führen Sie den folgenden Befehl aus.

rmdir /s /q C:\cygwin64

Stellen Sie nach dem Löschen und vor der Neuinstallation sicher, dass Sie

Windows+ Rund dann , dann alles im Ordner in und regeditentfernen/löschen .Software\CygwinHKEY_LOCAL_MACHINEHKEY-CURRENT-USER

Antwort4

  1. Führen Sie Cygwin aus:setup-x86_64.exe

  2. Wählen:Herunterladen ohne Installation

    Dadurch werden Cygwin-Terminaldateien in Ihren Zielordner heruntergeladen mithttp://cygwin.mirror.constant.com/

    Beispiel:C:\Zielordner>http://cygwin.mirror.constant.com/>

  3. LaufenwiederCygwin:setup-x86_64.exeWählen Sie nun:Lokales Verzeichnis installieren, klicken Nächste, klickenNächste, klickenNächste, DannBeenden.

  4. Gehe zu:http://cygwin.mirror.constant.com/Ordner gibt es zwei Unterordner:

    noarch x86_64

  5. Offenx86_64Ordner

  6. OffenfreigebenOrdner

  7. OffenSchlagOrdner (dort gibt es eine komprimierte Datei, Beispiel: **bash-4.4.12-

  8. tar.xz**-Datei

    Extrahieren Sie die komprimierte Bash-Datei und es erscheinen zwei Ordner (uswUndusr).

  9. OffenuswOrdner und Kopiebash.shDatei und fügen Sie sie einC:\cygwin64\binOrdner

verwandte Informationen