Como executar o arquivo .sh no Windows?

56

Quando estou tentando executar um arquivo (name.sh) na linha de comando pelo comando ./name.sh, estou recebendo o erro:

"." is not recognized as an internal or external command, operable or batch file

por favor me ajude a executar o arquivo .sh

    
por Broam 15.03.2010 / 08:34

16 respostas

68

Você está no Windows CMD.EXE (da mensagem de erro). Ele usa uma sintaxe diferente para executar comandos. Você precisará usar sh name.sh , supondo que você tenha o Cygwin ou algo semelhante instalado.

Para esclarecer, o Windows não possui um utilitário interno para suportar arquivos .sh. Para executar isso, você precisará instalar uma ferramenta de terceiros, como o Cygwin .

    
por 15.03.2010 / 08:58
13

Você está tentando executar um comando do Linux no Prompt de Comando do Windows.

No Linux, a barra é um separador de caminho. No Windows, a barra invertida é um separador de caminho e a barra geralmente indica um argumento.

Portanto, o Windows acha que você está tentando executar um comando chamado "." e analisando o argumento "/name.sh". A convenção correta seria ". \ Name.sh". Além disso, o Windows procurará automaticamente no diretório atual pelo seu comando, para que você possa digitar "name.sh".

O próximo problema que você enfrentará é que o Windows não sabe o que é um script sh, novamente, isso é uma coisa do Linux. Você poderia resolver isso instalando o Cygwin se realmente quiser ou precisar executar um script sh.

No entanto, a julgar por um de seus comentários anteriores, você poderia renomear o script para name.bat e excluir a linha "#! / bin / sh". Agora você tem um arquivo em lote que o Windows deve entender. Você pode ler mais sobre arquivos em lote aqui .

    
por 15.03.2010 / 14:48
10

Como alternativa, você pode procurar o lado sombrio e instalar o Linux. No prompt:

sh runide.sh

ou

sudo sh runide.sh

Seu programa será executado e você terá um sistema melhor também.

    
por 18.11.2010 / 16:46
8

O Windows não executa nativamente .sh . scripts de shell. Você instalou algo como CygWin ou está apenas tentando executá-lo nativamente em cmd.exe ?

    
por 15.03.2010 / 14:18
5

Você está tentando usar seu carro com suco de laranja em vez de gasolina. O Windows compartilha comandos semelhantes armazenados em arquivos .bat ou .cmd com shell scripts Unix / Linux / zOS Unix Subsistema / * ix, pois essas duas famílias de sistemas operacionais compartilham um ancestral comum às máquinas DEC PDP-x.

Se você quiser gratificação instantânea, precisará instalar um ambiente que ofereça um programa "sh.exe" ou "csh.exe" ou "bash.exe" (tsh.exe, alguém?)

Como alternativa, se você conhece muito bem os comandos de script do Unix e conhece muito bem os comandos do arquivo .cmd e .bat do Windows, é possível converter o arquivo .sh em um arquivo .bat ou .cmd. Mesmo assim, você encontrará frequentemente mais programas no estilo Unix que não têm equivalente no Windows - grep, sed, vi, emacs, etc. Assim, a chamada para instalar o CygWin (sem minimalista) - apenas para obter o shell e o Unix Ferramentas. Coloque-o em uma unidade flash, para essas ocasiões especiais.

    
por 17.08.2011 / 00:52
3

Alguém disse algo sobre o MS-DOS usando / para comandos e \ para caminhos. Isso é um pouco enganador. Veja meu exemplo:

C:\myfoo\foo\>cd../.. 
C:\myfoo\foo\>cd..\..

Não tem diferença no efeito. Sim, não é verdade para todas as operações - a resposta real é simplesmente Não , ou sem Cygwin ou SSHD você não pode.

Eu só sei porque estupidamente gastei meio dia tentando descobrir o que if then fi e eval , exec fazem com -Djava.something quando chamados.

    
por 29.05.2012 / 01:19
2

Use o Github para Windows. Ele contém todos os executáveis do ambiente Unix.

link

    
por 20.07.2015 / 18:24
2

Melhor solução na minha opinião:

  • Faça o download e instale .git para Windows

  • Clique com o botão direito do mouse na área de trabalho e diga "git bash here"

  • Execute seu script como no unix

  • Feito!

Cuidado: muitos comandos não funcionam no Windows! Mas ainda assim, muitas das coisas básicas vão funcionar.

Se você precisar desse script regularmente, convém criar um atalho (na sua área de trabalho, por exemplo):

  • Crie um atalho para mintty.exe na sua área de trabalho

  • Edite as propriedades do atalho e altere o destino (mantenha o caminho):

  • C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'

por 09.04.2017 / 20:58
1

Eu encontrei uma solução diferente e fácil, chamada UnixUtil .

Faça o download e descompacte-o na unidade C :. Defina a variável de ambiente path para incluir C:\UnixUtils\usr\local\wbin .

Isso é importante. NÃO defina o caminho para C:\UnixUtils\bin

    
por 14.05.2014 / 00:05
1

Para completar, quero mencionar um novo recurso “Windows Subsystem for Linux” para o Windows 10. Os detalhes são descritos em link

Note que é necessário ativar a opção "Modo de desenvolvedor" e ative a opção “Windows Subsystem for Linux (Beta)”.

Para mim, descobri que a instalação do Git for Windows (que estou usando de qualquer maneira) é suficiente.

    
por 27.12.2016 / 11:39
1

Este é um thread antigo, mas para aqueles que executam o Windows 10. Basta abrir os recursos do Windows no painel de controle 'Ativar ou desativar recursos do Windows'

Escolha o recurso 'Windows Subsystem for Linux'. Após a instalação, você tem 'Bash' e você ainda pode configurar servidores Linux nativos no bash. E claro, o comando sh, dentro do bash, também funciona.

    
por 01.05.2018 / 18:06
0

É possível que o problema esteja realmente dentro do arquivo name.sh - você está tentando usar o comando . mas está tentando executar um tipo de shell (por exemplo, csh , eu acho) em que isso não é um comando válido.

Então: name.sh começa com o #!/bin/sh correto (se você está realmente tentando executar sh )?

    
por 15.03.2010 / 08:55
0

ok, há MUITO errado com isso - solte o #! / bin / sh, e mude a extensão para bat e isso pode funcionar com mais algumas correções. Então você pode simplesmente invocá-lo pelo seu nome de arquivo também.

A sintaxe de um script de shell unix e um arquivo de lote do Windows não são muito semelhantes. cygwin, ou uma carga de bagunça com unxutils pode fazer algo que funcionaria em ambos, mas a menos que você esteja absolutamente certo de que o ambiente é sempre o mesmo, não vale a pena a dor de cabeça

    
por 15.03.2010 / 14:46
0

Se você tem uma caixa Linux em sua casa (ou trabalho) e está conectada à mesma rede, e esta rede é segura, isso pode funcionar:

  1. Crie um compartilhamento de pasta no Windows (muito fácil, mas certifique-se de que a rede esteja protegida contra intrusos).
  2. Monte no Linux com mount //WinMachine/Share LinuxFolder (IIRC e requer o Samba ).
  3. Usando algo como PuTTY , faça login remotamente na caixa do Linux.
  4. Execute seu comando na pasta montada.
por 31.08.2012 / 17:16
0

Para executar o script de shell nas janelas. Primeiro use o comando: dos2unix então você pode usar seu comando normal: sh runide.sh

Isso funcionará.

    
por 23.11.2015 / 12:57
0

Embora as respostas existentes estivessem corretas no momento, o Windows 10 agora inclui, opcionalmente, uma versão modificada do Ubuntu executando um shell bash completo .

Uma vez feitos executáveis, os scripts podem ser executados da maneira usual a partir do bash, por exemplo:

chmod +x myscript.sh
./myscript.sh

Se você deseja executar um script diretamente do Windows, pode criar um atalho no mesmo diretório e definir o "Destino" como:

C:\Windows\System32\bash.exe -c "./myscript.sh"

Se o caminho do seu script for relativo à localização do atalho (como no exemplo acima), certifique-se de que o campo "Iniciar em" também esteja em branco.

    
por 25.08.2016 / 09:34