Kompatybilność pdksh i bash a autoconf
Michal Kochanowicz
mkochano w ee.pw.edu.pl
Pon, 13 Mar 2000, 23:12:00 CET
Cześć
Próbując skompilować bttvgrab nadziałem się na małą niekompatybilność
pomiędzy pdksh i bash.
bttvgrab potrzebuje programiku o nazwie 'wish'. Wygląda to w ten sposób,
że w '/usr/bin' jest plik np. 'wish8.0' oraz symlink na niego 'wish'.
Bttvgrab używa autoconf. Poniżej linijka z configure.in:
AC_CHECK_PROGS(WISH,"wish8.1" "wish8.0" "wish")
Generuje ona m.in. taki kawałek kodu:
if test -n "$WISH"; then
WISH="`type \"$WISH\" | { read dummy dummy WISH; echo \"\$WISH\"; }`"
fi
Ponieważ na tym etapie zmienna WISH='wish8.0', więc wykonywane jest
polecenie:
type wish8.0
i zmiennej WISH przypisywane jest to co zwróci to polecenie, z
pominięciem dwóch pierwszych 'wyrazów'. I tutaj zaczynają się schody.
Dwa shell'e, dwie różne reakcje na powyższe polecenie:
bash -c 'type wish8.0'
wish8.0 is /usr/bin/wish8.0
pdksh -c 'type wish8.0'
wish8.0 is a tracked alias for /usr/bin/wish8.0
Co ciekawe wydanie tego polecenia w trybie interaktywnym daje rezultat
identyczny jak w bash'u. Być może jest to sprawa ustawienia jakichś
opcji, ale sprawdziłem strace'm, że pdksh po 'pdksh -c cośtam' chyba nie
otwiera żadnego pliku, w którym można by mu było podać te opcje.
Jak widać w przypadku pdksh to co trafi do zmiennej WISH nie ma wiele
wspólnego z oczekiwaniami.
Po czyjej stronie jest błąd? pdksh? bttvgrab? I jak go naprawić? Mam
wrażenie że autorzy autconf/automake założyli, że domyślnym shell'em
jest 'bash or 100% compatible', i pewnie wpisanie '#!/bin/bash' by
ominęło problem, ale to chyba nie jest właściwa droga?
Pozdrawiam
PS. Wersje pakietów:
autoconf-2.13-9
automake-1.4-8
--
--==Michał Kochanowicz==--==--==BOFH==--==--==mkochano w ee.pw.edu.pl==--
--==PGP key: www.ee(...)/~mkochano/PGP/ or finger me @ miriam.ee...==--
--== If money could talk, it would say goodbye. ==--
Więcej informacji o liście dyskusyjnej pld-devel-pl