Quando estou tentando executar um arquivo (name.sh) na linha de comando pelo comando ./name.sh, estou recebendo o erro de que:
"." não é reconhecido como um comando interno ou externo, arquivo operável ou em lote
por favor me ajude a executar o arquivo .sh
windows
shell-script
Broam
fonte
fonte
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 .
fonte
Como alternativa, você pode mudar para o lado sombrio e instalar o Linux. No prompt:
ou
Seu programa será executado e você também terá um sistema melhor.
fonte
Melhor solução na minha opinião:
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 trabalhoEdite 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'
fonte
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.
fonte
Alguém disse algo sobre o MS-DOS usando
/
comandos e\
caminhos. Isso é um pouco enganador. Veja o meu exemplo: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
eeval
,exec
fazer com-Djava.something
quando chamado.fonte
Use o Github para Windows. Ele contém todos os executáveis do ambiente Unix.
https://github-windows.s3.amazonaws.com/GitHubSetup.exe
fonte
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 incluirC:\UnixUtils\usr\local\wbin
.Isso é importante. NÃO defina o caminho para
C:\UnixUtils\bin
fonte
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.
fonte
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.
fonte
É 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 executarsh
)?fonte
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
fonte
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 ).fonte
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.
fonte
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:
Se você deseja executar um script diretamente do Windows, crie um atalho no mesmo diretório e defina o 'Target' para algo como:
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.
fonte