Chciałem wykonać skrypt powłoki:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
Próbowałem wykonać standardową procedurę, ale dostałem ten błąd:
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
DEBUG cd/etc/opt/ldapfiles/ldif_in ;
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
**ERROR sh: ./create_mgw_3shelf_6xIPNI1P.sh: /bin/bash^M: bad interpreter: No such file or directory**
Co to znaczy? Robiłem to jako root
użytkownik w root
grupie.
Czy to oznacza, że plik nie ma odpowiednich uprawnień dla root
użytkownika?
command-line
bash
scripts
użytkownik165062
źródło
źródło
dos2unix
programu.\n
ponieważ jest to system uniksowy. Skrypt był może z wcześniejszej wersji systemu Mac OS? Wsed -i -e 's/\r$/\n/' script.sh
takim przypadku możesz biec .W vimie możesz również użyć,
:set ff=unix
a następnie zapisać plik lub:set ff=dos
ponownie uzyskać formatowanie DOS.źródło
Twój plik ma zakończenia linii w stylu DOS / Windows (CR LF) , ale w systemach uniksowych tylko znak kontrolny LF jest używany jako podział linii.
Dodatkowy znak kontrolny CR jest zakodowany jak
^M
na wydruku. Możesz to również zobaczyć po uruchomieniucat -A create_mgw_3shelf_6xIPNI1P.sh
.Aby przekonwertować zakończenia linii ze stylu DOS / Windows na styl Unix, istnieje narzędzie o nazwie
dos2unix
. Instalujesz go za pomocą:Następnie możesz po prostu konwertować zakończenia linii plików na dwa sposoby, używając
W twoim przypadku po prostu uruchom poniższe polecenie, a plik skryptu zostanie przekonwertowany w miejscu:
Po tym Bash powinien być w stanie poprawnie zinterpretować plik.
źródło
Problem polega na tym, że edytujesz za pomocą Dos!
otwórz plik za pomocą vi, a następnie ustaw uniks za pomocą:
i wszystko w porządku
źródło
Zrobić
vi <your script>
.wtedy
:set list
; wyświetli dowolny ze znaków specjalnych w twoim skrypcie.następnie zamień znak:
:%s/^M//gc
[aby wpisać^M
naciśnij Ctrl+ v+ m]źródło
Jak wyjaśniono w innych odpowiedziach, jest to problem z formatem. Tak więc odpowiedzią jest zmiana formatu z DOS na zakończenia linii w stylu uniksowym. To kolejny prosty sposób, aby naprawić plik „na miejscu”
Jest dostępny w pakiecie
tofrodos
:źródło
Możesz także użyć gedit, aby usunąć niechciane postacie. W menu Plik wybierz Zapisz jako i ustaw typ końca linii unix / Linux.
źródło