Error de Cygwin: no se pudo ejecutar '/bin/bash': no ​​existe tal archivo o directorio

Error de Cygwin: no se pudo ejecutar '/bin/bash': no ​​existe tal archivo o directorio

Acabo de descargar e instalar Cygwin en Windows 7. Parece que se instaló correctamente, con la C:\Cygwin64carpeta que comprende 1,2 GB de datos cuando la carpeta de instalación desde la que lo instalé tenía poco menos de 300 MB. Sin embargo, al hacer clic en el acceso directo del escritorio se abre mintty.exe, que luego muestra el error:

No se pudo ejecutar '/bin/bash': no ​​existe dicho archivo o directorio

Esto a pesar de que instalé todos los archivos base, de los cuales bashsupuestamente formaba parte, e incluso si no lo fuera, el instalador lo mostró más tarde como un paquete requerido y lo instaló él mismo. ¿Alguien tiene alguna idea de lo que está pasando aquí? Este podría ser mi cuarto intento en el último día tratando de lograr que una instalación exitosa de Cygwin funcione; Estoy empezando a pensar que simplemente no estoy destinado a tenerlo.

Respuesta1

Logré solucionar esto con otra instalación más; esta vez opté por descargar e instalar desde la red (opción 1 en el instalador), en lugar de descargar los archivos por separado e instalarlos desde la carpeta almacenada localmente (opciones 2 y 3). No puedo estar seguro de por qué al seleccionar esas opciones la instalación estaba incompleta, pero ahora puedo ejecutarla bashsin errores.

Respuesta2

Tuve el mismo problema después de una nueva instalación predeterminada directamente desde la web.

Lo resolví yendo a "C:\cygwin64\bin" y duplicando "ash.exe" y cambiando el nombre de la copia a "bash.exe".

(Estaba intentando esto por pura casualidad, solo porque faltaba bash y encontré este siniestro archivo ash)

Respuesta3

El problema

Si lo deseas, puedes saltar hacia abajo para ver las dos soluciones, especialmente la segunda, que funcionó para mí.

Me encontré con este problema después de recuperar una parte dañada de mi computadora (después de que el System32directorio se corrompió, ¡puaj!). Este tipo de cosas ya habían sucedido antes (debido a otras circunstancias), donde todavía tenía el C:\cygwin64directorio con las carpetas y al menos Algunos otros archivos todavía están allí.

Antes, siempre podía reinstalar simplemente ejecutando setup-x86_64.exe(puse el mío en C:\cygwin64). Después de eso, bashvolvería. Siempre ejecuto esto con la opción en línea, https://mirrors.kernel.orgpero incluso si solo selecciono bashen la GUI de instalación, me encontré con este problema, aunque mi error apareció como

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

Terminal Cygwin (emulador) con el texto especificado anteriormente, es decir, "/bin/bash: salida 126. No se pudo ejecutar '/bin/bash': no ​​existe tal archivo o directorio"

Revisar mi bindirectorio mostró que, efectivamente, bashfaltaba. Desde el símbolo del sistema ( 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>

Tenga en cuenta que normalmente ejecuto Cygwin mediante:

  1. usando el acceso directo del Escritorio, que es lo mismo que ejecutar lo siguiente desde el símbolo del sistema (Windows)
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

o

  1. Usando el Cygwin.batarchivo. Primero mostraré el contenido del archivo y luego los resultados de mis intentos de ejecutarlo.
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>

Primer (intento fallido de) solución

Hallazgobash-<version>.tar.xz

Lo había descargado antes de https://mirrors.kernel.org, así que tenía una carpeta,

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

Hurgando un poco más, encontré un tarball bash-4.4.12-3.tar.xzllamado

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

haciendo el camino completo

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

Terminé abriendo esto con7zip, aunque podrías usarWinRARo algo parecido.

(Me enfadé un poco sobre cómo tarahora está disponible en Windows, pero usarlo no funcionó para la extracción. Puedes ver el despotricaraquíSi desea obtener más información sobre Windows 10 tary curlde forma nativa), copié y pegué el archivo tar en el escritorio, luego hice clic derecho y seleccioné 'Expandir a' dos veces para acceder a lo que había dentro. Copié todo eso en

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

momento en el que pude mirar lo que había dentro.Luego comparé las ubicaciones de los archivos internos con las ubicaciones de los archivos en una máquina donde tenía a Cygwin trabajando.Pude encontrar todos los archivos y luego planeé simplemente moverlos a sus posiciones apropiadas.

Para algunas otras personas, tal vez algunas provenientes degit bash(comoeste cartel)(archivado) o mingw/ msys2(comoeste cartel) (archivado), tenga en cuenta que mi error decía que el sistema no pudo encontrar /bin/bash; es diferente de cómo sus errores podrían hacer referencia a /usr/bin/bash, por lo que habrá algunas diferencias.

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>    /
                                                 /                              

Sí, espero volver, pero quiero obtener y guardar parte de esta respuesta.

Segunda solución

A un amigo le pasó esto. Un administrador había configurado su cuenta y había dejado "sus ganchos" en ella, lo que significa que tenía algún tipo de propiedad. Como ese administrador ya no trabajaba en el lugar donde nosotros lo hacíamos, tuvimos que encontrar una manera de arreglar todo.

Primero, intentamos eliminar todo, pero siempre había algunos archivos y carpetas de los que no podíamos deshacernos; eran propiedad de ese administrador (que, por cierto, es un tipo muy agradable). eliminar si ejecutamos el borrado como administrador ( File Manager -> C -> Windows -> explorer.exe, clic derecho, luego 'Ejecutar como administrador', vamos al C:\cygwin64directorio e intentamos eliminar... no dice. )

Para que finalmente todo funcionara, tuvimos que ingresar como administrador para cambiar los permisos en el directorio base y en todos los demás directorios, después de lo cual pudimos eliminar el C:\cygwindirectorio, volver a crearlo, colocar setup-86_64.exeel nuevo cygwin64directorio y luego ejecutar el configuración. TúpoderIntente simplemente cambiar los permisos para todo el directorio y luego reinstale bashcon la setup-x86_64.exeGUI, pero cuando intenté eso y luego entré en la terminal Cygwin, obtuve cosas como esta.

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.

Por cierto, también chmod -R u+w /provocó muchos errores.Permission denied

SI TIENE ARCHIVOS QUE RECUPERAR, PROBABLEMENTE TENGA LA SEGUNDA MEJOR OPORTUNIDAD DE HACERLO AHORA.

Una forma de realizar la eliminación es seguir las instrucciones deeste tutorial de aplicaciones(archivado). Necesitará privilegios de administrador para ejecutarlo CMDcomo administrador.

También puedes hacerlo con el Explorador de Windows, pero probablemente necesitarás ejecutar el Explorador como administrador. También intenté cambiar permisos de esta manera, pero no tuve suerte.

Desde el menú tipo, busque cmdy luego ejecute como administrador. Vea la captura de pantalla a continuación.

Pasos para ejecutar CMD como administrador

Tomar posesión

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

Observe que las dos palabras constituyentes del comando son "TOMAR PROPIO" y no "TOMAR". También tenga en cuenta que este comando probablemente llevará mucho tiempo, del orden de 5 a 20 minutos para miinstalación casi completa(archivado).

A continuación, les otorgaremos a todos permisos completos.

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

Podríamos, una vez más, intentar regresar e instalar/reinstalar bash, pero no me gustan las implicaciones de seguridad de lo que se acaba de hacer.

SI TIENE ARCHIVOS QUE RECUPERAR, PROBABLEMENTE TENGA LA SEGUNDA MEJOR OPORTUNIDAD DE HACERLO AHORA. Quiero decir que, si instala o reinstala bashusando la setup-x86_64GUI en este momento, o incluso si simplemente usa el Explorador de archivos de Windows, esta es su mejor oportunidad.

Prefiero simplemente eliminar este Cygwin y realizar una nueva instalación. SI HA INTENTADO RECUPERAR ALGÚN ARCHIVO QUE PUEDA, continúe y ejecute el siguiente comando.

rmdir /s /q C:\cygwin64

Después de esta eliminación y antes de la reinstalación, asegúrese de utilizar

Windows+ Ry luego regedit, luego elimina/borra todo lo que hay en la Software\Cygwincarpeta en HKEY_LOCAL_MACHINEy HKEY-CURRENT-USER.

Respuesta4

  1. Ejecute Cygwin:configuración-x86_64.exe

  2. Seleccionar:Descargar sin instalar

    Esto descargará los archivos de Cygwin Terminal en su carpeta de destino conhttp://cygwin.mirror.constant.com/

    ejemplo:C:\carpeta de destino>http://cygwin.mirror.constant.com/>

  3. Correrde nuevoCygwin:configuración-x86_64.exe. Ahora, seleccione:Instalar directorio local, haga clic Próximo, haga clicPróximo, haga clicPróximo, entoncesFinalizar.

  4. Ir a:http://cygwin.mirror.constant.com/carpeta, hay dos subcarpetas:

    noarca x86_64

  5. Abiertox86_64carpeta

  6. Abiertoliberarcarpeta

  7. Abiertointentocarpeta (hay un archivo comprimido, ejemplo: **bash-4.4.12-

  8. archivo tar.xz**

    Extraiga el archivo bash comprimido y aparecerán dos carpetas (etc.yusr).

  9. Abiertoetc.carpeta y copiarbash.sharchiva y pegaloC:\cygwin64\bincarpeta

información relacionada