Respostas:
Você está no Windows CMD.EXE (na mensagem de erro). Ele usa uma sintaxe diferente para executar comandos. Você precisará usar sh name.sh
, supondo que você tenha o Cygwin ou similar 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 .
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 invertida geralmente indica um argumento.
Portanto, o Windows pensa 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 pesquisará automaticamente o diretório atual em busca do 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ê pode 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ê também pode renomear o script para name.bat e excluir a linha "#! / Bin / sh". Agora você tem um arquivo em lotes que o Windows deve entender. Você pode ler mais sobre arquivos em lote aqui .
Como alternativa, você pode mudar para o lado sombrio e instalar o Linux. No prompt:
sh runide.sh
ou
sudo sh runide.sh
Seu programa será executado e você também terá um sistema melhor.
Baixe e instale o .git para Windows
Clique com o botão direito 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 coisas básicas funcionarão.
Se você precisar desse script regularmente, poderá criar um atalho (na á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'
Você está tentando dirigir seu carro com suco de laranja em vez de gasolina. O Windows compartilha comandos semelhantes armazenados em arquivos .bat ou .cmd com scripts de shell Unix / Linux / zOS Unix Subsystem / * ix, pois essas duas famílias de sistemas operacionais compartilham um ancestral comum das máquinas DEC PDP-x.
Se você deseja gratificação instantânea, precisará instalar um ambiente que forneç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 os comandos de arquivo .cmd e .bat do Windows, muito bem, pode converter o arquivo .sh em um arquivo .bat ou .cmd. Mesmo assim, muitas vezes você encontrará mais programas no estilo Unix que não têm equivalente no Windows - grep, sed, vi, emacs, etc. Portanto, a chamada para instalar o CygWin (não minimalista) - apenas para obter o shell e o Unix Ferramentas. Coloque-o em uma unidade flash, para essas ocasiões especiais.
Alguém disse algo sobre o MS-DOS usando /
comandos e \
caminhos. Isso é um pouco enganador. Veja o meu exemplo:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
Não tem diferença de 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 eu estupidamente passado meio dia tentando descobrir o que if then fi
e eval
, exec
fazer com -Djava.something
quando chamado.
Use o Github para Windows. Ele contém todos os executáveis do ambiente Unix.
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 paraC:\UnixUtils\bin
Para completar, quero mencionar um novo recurso “Windows Subsystem for Linux” para Windows 10. Os detalhes estão descritos em http://www.howtogeek.com/249966/how-toinstall / and-use-the- linux- bash-shell-on-windows-10 /
Observe que é necessário ativar a opção “Developer Mode” e ativar a opção “Windows Subsystem for Linux (Beta)”.
Por mim, descobri que a instalação do Git for Windows (que estou usando de qualquer maneira) é suficiente.
Este é um tópico antigo, mas para aqueles que executam o Windows 10. Basta abrir os recursos do Windows no painel de controle 'Ativar ou desativar os recursos do Windows'
Escolha o recurso 'Windows Subsystem for Linux'. Após a instalação, você possui o 'Bash' e ainda pode configurar servidores Linux nativos no bash. E, claro, o comando sh, dentro do bash, também funciona.
É 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
acho) no qual esse comando não é válido.
Então: name.sh
começa com o correto #!/bin/sh
(se você está realmente tentando executar sh
)?
ok, há muito errado com isso - largue o #! / bin / sh e altere a extensão para bat, e pode funcionar com mais algumas correções. Então você pode invocá-lo também pelo nome do arquivo.
A sintaxe de um script shell unix e um arquivo em lotes do Windows não são muito semelhantes. cygwin, ou um monte de mexer com unxutils pode criar 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
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
O que?! Eu suspeito que você nunca tentou isso ... No Windows, mesmo os recursos mais simples do bash não são suportados ou exigem sintaxe longa.
Se você tiver uma caixa do Linux em sua casa (ou trabalho) e conectada à mesma rede, e essa rede estiver segura, isso pode fazer o truque:
mount //WinMachine/Share LinuxFolder
(IIRC, e requer Samba ).Para executar o script de shell nas janelas. Primeiro use o comando: dos2unix e, em seguida, use o comando normal: sh runide.sh
Isso vai dar certo.
Embora as respostas existentes aqui estavam corretos no momento, o Windows 10 não agora opcionalmente incluir uma versão modificada do Ubuntu executando um shell bash completa .
Depois de 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, crie um atalho no mesmo diretório e defina o 'Target' para algo como:
C:\Windows\System32\bash.exe -c "./myscript.sh"
Se o caminho do seu script for relativo ao local do atalho (como no exemplo acima), verifique se o campo 'Iniciar em' também está em branco.