25 listopada
00:30 2006
W Kubuntu 6.10 niektóre bardziej zaawansowane skrypty powłoki mogą przestać działać (np. LimeWire się nie uruchomi), ponieważ polecenie /bin/sh jest podlinkowane do dash. Można samemu zmienić link symboliczny na bash, albo zmodyfikować pierwszą linię skryptu, żeby było #!/bin/bash.
Drugi problem, związany jest z programistami, którzy edytują pliki .sh pod Windowsem (?) i wybierają nieprawidłowy format linii tekstu, co powoduje następujący błąd: /bin/sh^M: bad interpreter: No such file or directory. Wtedy zazwyczaj wystarczy usunąć ostatni znak z pierwszej linii skryptu, lub przekonwertować cały plik...
Proszę o komentarz
Z mojej strony pewna uwaga:
Jeśli mamy wykonywalny makefile, czyli z #!/usr/bin/make
na początku, to warto pamiętać, że /usr/bin/make nie może być symlinkiem. Dzięki temu znacznie utrudnione jest na przykład zrobienie, żeby make zawsze automatycznie uruchamiało się jako SCHED_IDLEPRIO :)
Jezuch: Może wiesz, jak zrobić coś takiego
#!/scieżka_do_jdk6/bin/jrunscript
println(„hello”);
Chciałem sobie zrobić sobie skrypty w JavaScripcie :)
A co, tak nie działa? :) Jakby co, to w pierwszej linijce można też podać argumenty dla interpretera…
Nie działa :(
script error in file ./test :
sun.org.mozilla.javascript.internal.EvaluatorException: illegal character (./test#1) in ./test at line number 1
Bah, no tak, przecież # to nie jest poprawny komentarz w JS… IIRC.
Odnośnie tego pierwszego, wina może leżeć po obu stronach:
Dobry edytor textu i pod windowsem potrafi dobrze zakończyć linie ;P
Może piszą to w notatniku ;)
„Pełne możliwości sh” to pojęcie względne. Tak się składa, że dash właśnie odpowiada temu opisowi – Bourne Shell, standard POSIX, po prostu jest jaki jest. Bash to rozszerzenie. Bardzo wygodne, ale to już nie jest „sh”.