Tak trochu jsem k tomu byl přinucen.
Některé věci mne nepřestávají udivovat. Konkrétně začínám být velmi ale velmi předpojatý k programu dash. Po tom co jsem si zažil se mi začíná dělat zle už když slyším ten název.
V čem je problém? v DashAsBinSh
Prostě v Sqeeze je /bin/sh odkazem na /bin/dash.
Jenže některé programy, "zcela nečekaně" při své práci volají /bin/sh. Já mám třeba nějaké Makefile, které jsem sestavoval už před dlouho dobou a jsem s nimi spokojen. Tedy byl jsem až do pokusu spustit make na Debian Sqeeze. najednou nic nefungovalo. Ještě že mě napadlo, udělat takový malý příklad a odtrasovat si ho strace. Toto je obsah Makefile:
do-copy:
-cp book.{ps,pdf} dir/
-echo $$BASH_VERSION
na Lenny funguje pěkně
radek@vanor:~/work/make-problem$ strace -o lenny make do-copy
cp file dir/
cp book.{ps,pdf} dir/
echo $BASH_VERSION
3.2.39(1)-release
Ale na Sqeeze jsem se se zlou potázal
radek@ulys:/vol/HOME/radek/work/make-problem$ strace -f -o sqeeze2 make do-copy
cp book.{ps,pdf} dir/
cp: nelze získat informace o „book.{ps,pdf}“: Adresář nebo soubor neexistuje
make: [do-copy] Error 1 (ignored)
echo $BASH_VERSION
prázdný řádek tam kde má být verze bashe mi napověděl, ale strace potvrdil.
# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 13. čec 22.04 /bin/sh -> dash
Při spatření posloupnosti písmen "dash" mi začaly zvonit všechny výstražné zvonky v hlavě. Toto už jsem někde zahlédl a ne zrovna v pěkné souvislosti.
Najít pomocí Google DashAsBinSh pak bylo snadné. A nastavit /bin/sh na něco použitelného (t.j. bash) pak jendoduché
# dpkg-reconfigure dash
a odpovědět ne, opravdu nechci dash jako shell. Ve skutečnosti bych s s dash nejradši už nikdy v životě nepotkal.
DODATEK:
Ano, hned po té, co jsem tento příspěvek publikoval, mne napadlo prozkoumat dokumentaci make. Nalezl jsem další řešení. Pokud je v Makefile nastavena proměnná SHELL, použije se. Bohužel nestačí mít proměnnou SHELL v prostředí, musí být nastavena v Makefile.
V každé případě považuji změnu /bin/sh na /bin/bash za vhodnější, protože kdo ví, co všechno jiného by se ještě "rozsypalo".


