I'm læring gennem denne tutorial til at lære bash scripts til at automatisere et par opgaver for mig. I'm forbinder til en server ved hjælp af putty.
Scriptet, der ligger i .../Documents/LOG
, er:
#!/bin/bash
# My first script
echo "Hello World!"
Og jeg udførte følgende for læse/skrive/udføre tilladelser
chmod 755 my_script
Når jeg så indtaster ./my_script
, får jeg den fejl, der er angivet i overskriften.
Nogle lignende spørgsmål ønskede at se disse, så jeg tror, at de kan hjælpe:
which bash
/bin/bash
og
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh
Jeg har prøvet at tilføje den aktuelle mappe til PATH
, men det virker ikke...
Jeg har set dette problem, når man opretter scripts i Windows env og derefter porterer dem over til at køre i et Unix-miljø.
Prøv at køre dos2unix
på scriptet:
http://dos2unix.sourceforge.net/
Eller du kan også bare omskrive scriptet i din Unix env med vi
og teste det.
Unix bruger andre linjeslutninger, så du kan ikke læse den fil, du har oprettet på Windows. Derfor ser den ^M som et ulovligt tegn.
Hvis du vil skrive en fil på Windows og derefter portere den over, skal du sikre dig, at din editor er indstillet til at oprette filer i UNIX-format.
I notepad++ står der nederst til højre på skærmen, at du kan se dokumentformatet. Som standard vil der stå Dos\Windows
. For at ændre det skal du gå til
Hvis du bruger Sublime Text på Windows eller Mac til at redigere dine scripts:
Klik på View > Line Endings > Unix
og gem filen igen.