2010-03-15 07:34:42 +0000 2010-03-15 07:34:42 +0000
68
68

Como executar um ficheiro .sh no Windows?

Quando estou a tentar executar um ficheiro(name.sh) na linha de comandos através do comando ./name.sh , estou a receber o erro que:

“.” não é reconhecido como um comando interno ou externo, operável ou em lote

por favor ajude-me a executar o ficheiro .sh

Respostas (15)

76
76
76
2010-03-15 07:58:46 +0000

Você está no Windows CMD.EXE (a partir da mensagem de erro). Ele usa uma sintaxe diferente para executar comandos. Terá de usar o sh name.sh, assumindo que tem o Cygwin ou similar instalado.

Para clarificar, o Windows não tem um utilitário incorporado para suportar ficheiros .sh. Para executar tal, você precisará instalar uma ferramenta de terceiros, como o Cygwin .

13
13
13
2010-03-15 13:48:44 +0000

Está a tentar executar um comando Linux no Windows Command Prompt.

No Linux a barra oblíqua dianteira é um separador de caminhos. No Windows a barra invertida é um separador de caminhos e a barra de avanço geralmente indica um argumento.

Portanto, o Windows pensa que está a tentar correr um comando chamado “.” e a analisá-lo o argumento “/name.sh”. A convenção correcta seria “.\name.sh”. Adicionalmente, o Windows irá procurar automaticamente no directório actual o seu comando para que possa apenas digitar “name.sh”.

O próximo problema que irá enfrentar é que o Windows não sabe o que é um script sh, mais uma vez isto é uma coisa do Linux. Pode resolver isto instalando o Cygwin se realmente quiser ou precisar de correr um script sh.

No entanto, a julgar por um dos seus comentários anteriores, pode também renomear o script para name.bat e apagar a linha “#!/bin/sh”. Agora você tem um arquivo Batch que o Windows deve entender. Você pode ler mais sobre os arquivos batch aqui .

11
11
11
2010-11-18 15:46:30 +0000

Em alternativa, pode virar-se para o lado negro e instalar o Linux. A partir do prompt:

sh runide.sh
sudo sh runide.sh

O seu programa irá correr e terá um sistema melhor também.

9
9
9
2017-04-09 18:58:10 +0000

Melhor solução na minha opinião:

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

  • Clique com o botão direito do rato no ambiente de trabalho e diga “git bash here ”

  • Execute o seu script como em unix

  • Feito!

Cautela: Muitos comandos não funcionam no windows! Mas mesmo assim, muitos dos comandos básicos funcionarão.

Se precisar desse script regularmente pode querer criar um atalho (no seu desktop, por exemplo):

  • Criar um atalho para mintty.exe no seu desktop

  • Editar propriedades do atalho e alterar o alvo (manter o caminho):

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

5
5
5
2011-08-16 22:52:50 +0000

Está a tentar passar o seu carro com sumo de laranja em vez de gasolina. O Windows partilha comandos semelhantes armazenados em ficheiros .bat ou .cmd com o Unix/Linux/zOS Unix Subsystem/*ix shell scripts uma vez que estas duas famílias de sistemas operativos partilham um antepassado comum as máquinas DEC PDP-x.

Se pretende gratificação instantânea, terá de instalar um ambiente que forneça um “sh. exe” ou “csh.exe” ou “bash.exe” (tsh.exe anyone?)

Alternativamente, se você conhece bem os comandos de script Unix, e conhece os comandos de arquivo .cmd e .bat do Windows, muito bem, você pode traduzir o arquivo .sh para um arquivo .bat ou .cmd. Mesmo assim, encontrará frequentemente mais programas em estilo Unix que não têm equivalente no Windows -grep, sed, vi, emacs, etc. Assim, a chamada para instalar o CygWin (não minimalista)- apenas para obter as ferramentas shell e Unix. Coloque-o em um flash-drive, para estas ocasiões especiais.

3
3
3
2012-05-28 23:19:47 +0000

Alguém disse algo sobre MS-DOS usando / para comandos e Alguém disse algo sobre MS-DOS usando/` para comandos e para caminhos. Isto é um pouco enganador. Vejam o meu exemplo:

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

Não tem qualquer diferença. Sim, não é verdade para todas as operações -  a resposta real é simplesmente No, ou sem Cygwin ou SSHD não se consegue.

Só sei porque passei meio dia a tentar descobrir o que if then fi e eval, exec fazem com -Djava.something quando são chamados.

2
2
2
2015-07-20 16:24:31 +0000

Use o Github para Windows. Contém todos os executáveis do ambiente Unix. https://github-windows.s3.amazonaws.com/GitHubSetup.exe

1
1
1
2014-05-13 22:05:11 +0000

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

Download e descompacte-a para C: drive. Defina a variável ambiente path para incluir C:\UnixUtils\usr\local\wbin.

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

1
1
1
2018-05-01 16:06:51 +0000

Este é um tópico antigo, mas para quem corre com o Windows 10. Basta abrir as funcionalidades do Windows a partir do painel de controlo ‘Ligar ou desligar as funcionalidades do Windows’

Escolha a funcionalidade ‘Subsistema Windows para Linux’. Depois de instalar, tem ‘Bash’ e pode até configurar servidores Linux nativos dentro do bash. E claro, o comando sh, dentro do bash, também funciona.

1
1
1
2016-12-27 10:39:14 +0000

Para completar, quero mencionar uma nova funcionalidade “Subsistema Windows para Linux” para o Windows 10. Os detalhes estão descritos em http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

Nota, que requer activar o comutador “Developer Mode” e activar a opção “Windows Subsystem for Linux (Beta)”.

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

0
0
0
2012-08-31 15:16:38 +0000

Se tem uma caixa Linux em casa (ou no trabalho) e ligada à mesma rede, e esta rede é segura, isto pode fazer o truque:

  1. Faça uma partilha de pastas no Windows (bastante fácil, mas certifique-se que a rede está segura contra intrusos).
  2. Monte-o no Linux com mount //WinMachine/Share LinuxFolder (IIRC, e requer Samba ).
  3. Usando algo como PuTTY , inicie sessão remotamente nessa caixa Linux.
  4. Execute o seu comando na pasta montada.
0
0
0
2010-03-15 13:46:42 +0000

ok, há um grande erro com isso - largue o #!/bin/sh, e mude a extensão para morcego, e pode funcionar com mais algumas reparações. Depois pode apenas invocá-lo pelo seu nome de ficheiro também.

A sintaxe de um script de shell unix, e um ficheiro de batch do windows arn’t too similar. cygwin, ou uma carga de confusão com unxutils pode fazer algo que funcionaria em ambos, mas a menos que esteja ABSOLUTAMENTE certo de que o ambiente é sempre o mesmo, não vale a pena a dor de cabeça

0
0
0
2016-08-25 07:34:59 +0000

Embora as respostas existentes aqui fossem correctas na altura, o Windows 10 does inclui agora opcionalmente uma versão modificada do Ubuntu a correr uma shell bash completa .

Uma vez que o script pode ser executado da forma usual a partir do bash, por exemplo:

chmod +x myscript.sh
./myscript.sh

Se quiser executar um script directamente a partir do Windows pode criar um atalho no mesmo directório e definir o ‘Target’ para algo como:

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

Se o caminho do seu script é relativo à localização do atalho (como o exemplo acima) assegure-se que o campo ‘Start in’ também está em branco.

0
0
0
2015-11-23 11:57:56 +0000

Para executar o script da shell a partir das janelas. Primeiro use o comando : dos2unix depois pode usar o seu comando normal : sh runide.sh

Isto irá funcionar.

0
0
0
2010-03-15 07:55:19 +0000

É possível que o problema esteja realmente dentro do ficheiro name.sh – está a tentar usar o comando . mas está a tentar correr uma espécie de shell (por exemplo, csh, penso eu) em que esse não é um comando válido.

Então: o name.sh começa com o #!/bin/sh correcto (se está mesmo a tentar correr o sh)?