Erro Cygwin - Falha ao executar '/bin/bash': arquivo ou diretório inexistente

Erro Cygwin - Falha ao executar '/bin/bash': arquivo ou diretório inexistente

Acabei de baixar e instalar o Cygwin no Windows 7. Parece ter sido instalado com sucesso, com a C:\Cygwin64pasta contendo 1,2 GB de dados quando a pasta de instalação da qual instalei tinha pouco menos de 300 MB. No entanto, clicar no atalho da área de trabalho abre mintty.exe, que exibe o erro:

Falha ao executar '/bin/bash': arquivo ou diretório inexistente

Isso apesar de eu ter instalado todos os arquivos base, dos quais bashsupostamente faziam parte - e mesmo que não fizessem, o instalador posteriormente mostrou-o como um pacote necessário e o instalou sozinho. Então, alguém tem alguma ideia do que está acontecendo aqui? Esta pode ser minha quarta tentativa no último dia tentando fazer com que uma instalação bem-sucedida do Cygwin funcione; Estou começando a pensar que simplesmente não fui feito para ter isso.

Responder1

Consegui resolver isso com mais uma instalação - desta vez optei por baixar e instalar da rede (opção 1 no instalador), em vez de baixar os arquivos separadamente e instalar da pasta armazenada localmente (opções 2 e 3). Não sei por que a seleção dessas opções me proporcionou uma instalação incompleta, mas agora posso executar bashsem erros.

Responder2

Eu tive o mesmo problema após uma nova instalação padrão diretamente da web.

Eu resolvi indo em "C:\cygwin64\bin" e duplicando "ash.exe" e renomeando a cópia para "bash.exe".

(Eu estava tentando isso por puro acaso, só porque o bash estava faltando e encontrei esse sinistro arquivo ash)

Responder3

O problema

Você pode pular para ver as duas soluções, especialmente a segunda, que funcionou para mim, se desejar.

Acabei de me deparar com esse problema depois de recuperar uma parte corrompida do meu computador (depois que o System32diretório foi corrompido - eca!) Esse tipo de coisa já havia acontecido antes (devido a outras circunstâncias), onde eu ainda tinha o C:\cygwin64diretório com as pastas e pelo menos alguns outros arquivos ainda estão lá.

Antes, eu sempre conseguia simplesmente reinstalar executando setup-x86_64.exe(coloquei o meu C:\cygwin64). Depois disso, bashestaria de volta. Eu sempre executo isso com a opção on-line, https://mirrors.kernel.orgmas mesmo se eu selecionar apenas bashna GUI de instalação, estava me deparando com esse problema, embora meu erro tenha surgido como

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

Terminal Cygwin (emulador) com o texto especificado acima, ou seja, "/bin/bash: Saída 126. Falha ao executar '/bin/bash': Arquivo ou diretório inexistente"

Verificar meu bindiretório mostrou que, de fato, bashestava faltando. No prompt de comando ( 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>

Observe que normalmente executo o Cygwin:

  1. usando o atalho da área de trabalho, que é o mesmo que executar o seguinte no prompt de comando (Windows)
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

ou

  1. Usando o Cygwin.batarquivo. Mostrarei primeiro o conteúdo do arquivo e depois os resultados das minhas tentativas de executá-lo.
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>

Primeira (tentativa malsucedida de uma) solução

Encontrandobash-<version>.tar.xz

Eu tinha baixado antes de https://mirrors.kernel.org, então eu tinha uma pasta,

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

Procurando um pouco mais, encontrei um tarball bash-4.4.12-3.tar.xzchamado

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

fazendo o caminho completo

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

Acabei abrindo isso com7zip, embora você possa usarWinRARou algo semelhante.

(Eu fiz um pequeno discurso retórico sobre como taragora está disponível no Windows, mas usá-lo não funcionou para a extração. Você pode ver o discurso retóricoaquise você quiser saber mais sobre tare curlnativamente no Windows 10) Copiei / colei o tarball na área de trabalho, cliquei com o botão direito e escolhi 'Expandir para' duas vezes para ver o que estava dentro. Copiei tudo isso em

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

nesse ponto eu pude ver o que havia dentro.Em seguida, comparei as localizações dos arquivos internos com as localizações dos arquivos em uma máquina onde o Cygwin estava funcionando.Consegui encontrar todos os arquivos e planejei simplesmente movê-los para as posições apropriadas.

Para algumas outras pessoas, talvez algumas vindas degit bash(comoeste pôster)(arquivado) ou mingw/ msys2(comoeste pôster)(arquivado), observe que meu erro dizia que o sistema não conseguiu encontrar /bin/bash- diferente de como seus erros podem fazer referência /usr/bin/bash, portanto, haverá algumas diferenças.

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

Sim, espero voltar, mas quero pegar algumas dessas respostas e salvá-las.

Segunda solução

Isso aconteceu com um amigo. Um administrador configurou sua conta e deixou “seus ganchos” nela, o que significa que ele detinha algum tipo de propriedade. Como aquele administrador não trabalhava mais no local em que trabalhávamos, tivemos que descobrir uma maneira de consertar tudo.

Primeiro, tentamos excluir tudo, mas sempre havia alguns arquivos e pastas dos quais não conseguíamos nos livrar - eles pertenciam àquele administrador (que, aliás, é um cara muito legal). delete se executamos a exclusão como administrador ( File Manager -> C -> Windows -> explorer.exe, clique com o botão direito, depois em 'Executar como administrador', vá para o C:\cygwin64diretório e tente excluir ... sem dados. )

Para finalmente fazer as coisas funcionarem, tivemos que entrar como administrador para alterar as permissões no diretório base e em todos os outros diretórios, após o que poderíamos excluir o C:\cygwindiretório, recriá-lo, colocar setup-86_64.exeno novo cygwin64diretório e executar o configurar. Vocêpodetente apenas alterar as permissões para todo o diretório e depois reinstalar bashcom a setup-x86_64.exeGUI, mas quando tentei isso e fui para o terminal Cygwin, recebi coisas assim.

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.

A propósito, também chmod -R u+w /levou a muitos Permission deniederros.

SE VOCÊ TEM ARQUIVOS PARA RECUPERAR, PROVAVELMENTE TEM A SEGUNDA MELHOR CHANCE DE FAZER ISSO, AGORA.

Uma maneira de fazer a exclusão é seguir as instruções deeste tutorial appual(arquivado). Você precisará de privilégios de administrador para executar CMDcomo administrador.

Você também pode fazer isso com o Windows Explorer, mas provavelmente precisará executar o Explorer como administrador. Tentei alterar as permissões assim também, mas sem sorte.

No menu de tipo, pesquise cmde execute como administrador. Veja a captura de tela abaixo.

Etapas para executar o CMD como administrador

Tomar posse

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

Observe que as duas palavras constituintes do comando são 'TAKE OWN' e não 'TAKE DOWN'. Observe também que este comando provavelmente levará muito tempo, da ordem de 5 a 20 minutos para o meuinstalação quase completa(arquivado).

A seguir, daremos permissões totais a todos.

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

Poderíamos, mais uma vez, tentar voltar e instalar/reinstalar bash, mas não gosto das implicações de segurança do que acabou de ser feito.

SE VOCÊ TEM ARQUIVOS PARA RECUPERAR, PROVAVELMENTE TEM A SEGUNDA MELHOR CHANCE DE FAZER ISSO, AGORA. Quero dizer que, se você instalar ou reinstalar bashusando a setup-x86_64GUI neste momento, ou mesmo se usar apenas o Windows File Explorer, esta é sua melhor chance.

Prefiro excluir este Cygwin e obter uma nova instalação. SE VOCÊ TENTOU RECUPERAR TODOS OS ARQUIVOS QUE PODE, vá em frente e execute o seguinte comando.

rmdir /s /q C:\cygwin64

Após esta exclusão e antes da reinstalação, certifique-se de usar

Windows+ Re então regedit, remova/exclua tudo na Software\Cygwinpasta em HKEY_LOCAL_MACHINEe HKEY-CURRENT-USER.

Responder4

  1. Execute o Cygwin:setup-x86_64.exe

  2. Selecione:Baixe sem instalar

    Isso fará o download dos arquivos do Cygwin Terminal em sua pasta de destino comhttp://cygwin.mirror.constant.com/

    exemplo:C:\pasta de destino>http://cygwin.mirror.constant.com/>

  3. Correrde novoCygwin:setup-x86_64.exe. Agora, selecione:Instale o diretório local, clique Próximo, cliquePróximo, cliquePróximo, entãoTerminar.

  4. Vá para:http://cygwin.mirror.constant.com/pasta, existem duas subpastas:

    noarca x86_64

  5. Abrirx86_64pasta

  6. Abrirliberarpasta

  7. Abrirfestapasta (há um arquivo compactado, exemplo: **bash-4.4.12-

  8. arquivo tar.xz**

    Extraia o arquivo bash compactado e duas pastas aparecerão (etc.eusr).

  9. Abriretc.pasta e cópiabash.sharquivo e cole-oC:\cygwin64\binpasta

informação relacionada