Ich habe Cygwin gerade heruntergeladen und unter Windows 7 installiert. Die Installation scheint erfolgreich gewesen zu sein, denn der C:\Cygwin64
Ordner 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 bash
angeblich 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 bash
ohne 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 System32
Verzeichnis beschädigt worden war – igitt!). So etwas war schon einmal passiert (aufgrund anderer Umstände), und ich hatte das C:\cygwin64
Verzeichnis 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 bash
wäre ich wieder da. Ich führe dies immer mit der Online-Option durch, https://mirrors.kernel.org
aber selbst wenn ich nur bash
in 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
Die Überprüfung meines bin
Verzeichnisses zeigte, dass es tatsächlich bash
fehlte. 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:
- 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
- Verwenden der
Cygwin.bat
Datei. 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.xz
namens
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önntenWinRAR
oder etwas ähnliches.
(Ich habe mich ein bisschen darüber ausgelassen, wie es tar
jetzt unter Windows verfügbar ist, aber die Verwendung hat bei der Extraktion nicht funktioniert. Sie können die Schimpftirade sehenHiertar
wenn 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:\cygwin64
Verzeichnis 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:\cygwin
Verzeichnis löschen, neu erstellen, setup-86_64.exe
in das neue cygwin64
Verzeichnis einfügen und dann das Setup ausführen. Siedürfenbash
Versuchen 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 CMD
als 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 cmd
und führen Sie es dann als Administrator aus. Siehe Screenshot unten.
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_64
GUI 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 regedit
entfernen/löschen .Software\Cygwin
HKEY_LOCAL_MACHINE
HKEY-CURRENT-USER
Antwort4
Führen Sie Cygwin aus:setup-x86_64.exe
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/>
LaufenwiederCygwin:setup-x86_64.exeWählen Sie nun:Lokales Verzeichnis installieren, klicken Nächste, klickenNächste, klickenNächste, DannBeenden.
Gehe zu:http://cygwin.mirror.constant.com/Ordner gibt es zwei Unterordner:
noarch x86_64
Offenx86_64Ordner
OffenfreigebenOrdner
OffenSchlagOrdner (dort gibt es eine komprimierte Datei, Beispiel: **bash-4.4.12-
tar.xz**-Datei
Extrahieren Sie die komprimierte Bash-Datei und es erscheinen zwei Ordner (uswUndusr).
OffenuswOrdner und Kopiebash.shDatei und fügen Sie sie einC:\cygwin64\binOrdner