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

Hoe voer ik een .sh bestand uit op Windows?

Wanneer ik een bestand (naam.sh) in de opdrachtregel probeer uit te voeren met het commando ./name.sh , krijg ik de fout dat:

“.” niet wordt herkend als een intern of extern commando, operabel of batchbestand

help me alstublieft met het uitvoeren van het .sh bestand

Antwoorden (15)

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

U bent op Windows CMD.EXE (van de foutmelding). Het gebruikt een andere syntaxis om commando’s uit te voeren. U moet sh name.sh gebruiken, ervan uitgaande dat u Cygwin of iets dergelijks hebt geïnstalleerd.

Ter verduidelijking: Windows heeft geen ingebouwd hulpprogramma voor de ondersteuning van .sh-bestanden. Om dergelijke bestanden uit te voeren, dient u een hulpprogramma van derden te installeren, zoals Cygwin .

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

Je probeert een Linux commando uit te voeren op de Windows Command Prompt.

Op Linux is de voorwaartse schuine streep een padscheidingsteken. Op Windows is de backslash een padscheidingsteken en de voorwaartse schuine streep geeft over het algemeen een argument aan.

Daarom denkt Windows dat je probeert een commando genaamd “.” uit te voeren en het argument “/name.sh” te parseren. De juiste conventie zou “.\name.sh” zijn. Bovendien zoekt Windows automatisch in de huidige directory naar je commando zodat je gewoon “name.sh” kunt typen.

Het volgende probleem waar je mee te maken krijgt is dat Windows niet weet wat een sh script is, ook dit is een Linux ding. Je zou dit kunnen oplossen door Cygwin te installeren als je echt een sh script wilt of moet draaien.

Echter, te oordelen naar een van je vorige opmerkingen kun je het script net zo goed hernoemen naar name.bat en de “#!/bin/sh” regel verwijderen. Nu heb je een Batch-bestand dat Windows zou moeten begrijpen. U kunt meer lezen over batch-bestanden hier .

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

Je kunt ook naar de donkere kant gaan en Linux installeren. Vanaf de prompt:

sh runide.sh

of

sudo sh runide.sh

Uw programma zal draaien en u zult ook een beter systeem hebben.

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

Beste oplossing naar mijn mening:

  • Download en installeer .git voor Windows

  • Klik met de rechtermuisknop op het bureaublad en zeg “git bash hier ”

  • Voer je script uit zoals in unix

  • Klaar!

Caution: Veel commando’s werken niet op windows! Maar toch, veel van de basis dingen zullen werken.

Als je dat script regelmatig nodig hebt kan het zijn dat je een snelkoppeling wilt maken (op je bureaublad b.v.):

  • Snelkoppeling naar mintty.exe op je bureaublad

  • Eigenschappen van de snelkoppeling toevoegen en het doel wijzigen (het pad behouden):

  • 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

Je probeert je auto te laten rijden op sinaasappelsap in plaats van benzine. Windows deelt gelijkaardige commando’s opgeslagen in .bat of .cmd bestanden met Unix/Linux/zOS Unix Subsystem/*ix shell scripts aangezien deze twee families van besturingssystemen een gemeenschappelijke voorouder delen de DEC PDP-x machines.

Als je onmiddellijke bevrediging wil, zal je een omgeving moeten installeren die een “sh. exe” programma of “csh.exe” of “bash.exe” programma (tsh.exe anyone?)

Als je de Unix script commando’s kent, heel goed, en je kent de Windows .cmd en .bat file commando’s, heel goed, dan kun je het .sh bestand vertalen naar een .bat of .cmd bestand. Toch zul je vaak meer Unix-stijl programma’s tegenkomen die geen equivalent hebben onder Windows-rep, sed, vi, emacs, etc. Dus, de aanroep om CygWin te installeren (geen minimalistisch) – gewoon om de shell en Unix tools te krijgen. Zet het op een flash-drive, voor deze speciale gelegenheden.

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

Iemand zei iets over MS-DOS die / gebruikt voor commando’s en Iemand zei iets over MS-DOS die/` gebruikt voor commando’s en voor paden. Dit is enigszins misleidend. Kijk naar mijn voorbeeld:

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

heeft geen verschil in werking. Ja, het is niet waar voor alle bewerkingen - het eigenlijke antwoord is gewoon Nee, of zonder Cygwin of SSHD kan je dat niet.

weet ik alleen omdat ik domweg een halve dag heb geprobeerd uit te zoeken wat if then fi en eval, exec doen met -Djava.something als je wordt gebeld.

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

Gebruik Github voor Windows. Het bevat alle uitvoerbare bestanden van de Unix-omgeving. https://github-windows.s3.amazonaws.com/GitHubSetup.exe

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

Ik heb een andere en eenvoudige oplossing gevonden, genaamd UnixUtil .

Download en rits het uit naar C: drive. Stel de omgevingsvariabele path in op C:\UnixUtils\usr\local\wbin.

Dit is belangrijk. Stel het pad naar C:\UnixUtils\bin NIET in

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

Dit is een oude draad, maar voor wie met Windows 10 werkt. Open gewoon Windows-functies van het bedieningspaneel ‘Windows-functies in- of uitschakelen’

Kies de functie ‘Windows-subsysteem voor Linux’. Na de installatie heb je ‘Bash’ en kun je zelfs native Linux servers configureren binnen bash. En natuurlijk werkt het sh-commando, binnen bash, ook.

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

Voor de volledigheid wil ik een nieuwe “Windows Subsystem for Linux” functie voor Windows 10 noemen. De details staan beschreven in http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

Let op, het vereist het activeren van de “Developer Mode” schakelaar en het inschakelen van de “Windows Subsystem for Linux (Beta)” optie.

Voor mijzelf vond ik dat Git voor Windows installatie (die ik toch al gebruik) voldoende is.

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

Als je een Linux-box in huis (of op het werk) hebt en deze op hetzelfde netwerk aansluit, en dit netwerk is veilig, dan kan dit de truc zijn:

  1. 1. Maak een map share op Windows (vrij eenvoudig, maar zorg ervoor dat het netwerk veilig is voor indringers).
  2. 2. Monteer het in Linux met mount //WinMachine/Share LinuxFolder (IIRC, en vereist Samba ).
  3. 3. Gebruik iets als PuTTY , log op afstand in op die Linux-box.
  4. 4. Voer uw opdracht uit in de gekoppelde map.
0
0
0
2010-03-15 13:46:42 +0000

Oké, daar is veel mis mee - laat de #! /bin/sh vallen, en verander de extensie naar vleermuis, en het zou kunnen werken met een paar meer fixes. Dan kun je het ook gewoon aanroepen bij de bestandsnaam.

De syntaxis van een unix shell script, en een windows batch bestand arn’t too similar. cygwin, of een hoop geknoei met unxutils zou iets kunnen maken dat in beide zou werken, maar tenzij je ABSOLUTELY zeker weet dat de omgeving altijd hetzelfde is, is het de hoofdpijn niet waard

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

Hoewel de bestaande antwoorden hier destijds correct waren, bevat Windows 10 does nu optioneel een aangepaste versie van Ubuntu met een volledige bash-shell .

Eenmaal uitvoerbaar gemaakt, kunnen scripts op de gebruikelijke manier worden uitgevoerd vanuit de bash, bijvoorbeeld:

chmod +x myscript.sh
./myscript.sh

Als je een script direct vanuit Windows wilt uitvoeren, kun je een snelkoppeling maken in dezelfde map en de ‘Target’ instellen op iets als:

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

Als het pad van je script relatief is ten opzichte van de locatie van de snelkoppeling (zoals in het voorbeeld hierboven), zorg er dan voor dat het veld ‘Start in’ ook blanco is.

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

Om het shellscript te draaien vanuit de vensters. Gebruik eerst het commando : dos2unix dan kun je je normale commando gebruiken : sh runide.sh

Dit zal werken.

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

Het is mogelijk dat het probleem eigenlijk binnen het bestand name.sh ligt – u probeert het . commando te gebruiken maar het probeert een soort shell te draaien (bijv. csh, denk ik) waarin dat geen geldig commando is.

Dus: begint name.sh met het juiste #!/bin/sh (als u daadwerkelijk probeert sh te draaien)?