Acabei de baixar e instalar o Cygwin no Windows 7. Parece ter sido instalado com sucesso, com a C:\Cygwin64
pasta 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 bash
supostamente 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 bash
sem 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 System32
diretório foi corrompido - eca!) Esse tipo de coisa já havia acontecido antes (devido a outras circunstâncias), onde eu ainda tinha o C:\cygwin64
diretó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, bash
estaria de volta. Eu sempre executo isso com a opção on-line, https://mirrors.kernel.org
mas mesmo se eu selecionar apenas bash
na 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
Verificar meu bin
diretório mostrou que, de fato, bash
estava 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:
- 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
- Usando o
Cygwin.bat
arquivo. 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.xz
chamado
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 usarWinRAR
ou algo semelhante.
(Eu fiz um pequeno discurso retórico sobre como tar
agora 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 tar
e curl
nativamente 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:\cygwin64
diretó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:\cygwin
diretório, recriá-lo, colocar setup-86_64.exe
no novo cygwin64
diretório e executar o configurar. Vocêpodetente apenas alterar as permissões para todo o diretório e depois reinstalar bash
com a setup-x86_64.exe
GUI, 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 denied
erros.
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 CMD
como 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 cmd
e execute como administrador. Veja a captura de tela abaixo.
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 bash
usando a setup-x86_64
GUI 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\Cygwin
pasta em HKEY_LOCAL_MACHINE
e HKEY-CURRENT-USER
.
Responder4
Execute o Cygwin:setup-x86_64.exe
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/>
Correrde novoCygwin:setup-x86_64.exe. Agora, selecione:Instale o diretório local, clique Próximo, cliquePróximo, cliquePróximo, entãoTerminar.
Vá para:http://cygwin.mirror.constant.com/pasta, existem duas subpastas:
noarca x86_64
Abrirx86_64pasta
Abrirliberarpasta
Abrirfestapasta (há um arquivo compactado, exemplo: **bash-4.4.12-
arquivo tar.xz**
Extraia o arquivo bash compactado e duas pastas aparecerão (etc.eusr).
Abriretc.pasta e cópiabash.sharquivo e cole-oC:\cygwin64\binpasta