zsh robi to inaczej z $0

Tomasz Pala gotar w polanet.pl
Nie, 11 Kwi 2004, 11:21:46 CEST


On Sun, Apr 11, 2004 at 02:39:17 +0200, Arkadiusz Miskiewicz wrote:

> > Tak. W ten sam sposób interpretuje to tcsh, bash, ksh i zsh na Solarisie
> > oraz tcsh i bash na FreeBSD.
[...]
> Możesz wkleić tu swój sposób testowania z byle którego systemu?

Mój błąd - kropki przed ./test.sh nie zauważyłem, ale to nieistotne,
gdyż z nią WSZYSTKIE, w tym i zsh, który jest aktualnie na ftp (nowy już
nie będzie), zwracają -shell, zaś bez niej - ścieżkę do skryptu. Z taką
zawartością zprofile, jaką pokazałeś (setopt no_function_argzero), nie
ma żadnej rozbieżności między shellami (dopiero będzie z nową). Nie
przeniosłeś przypadkiem zprofile z jakiejś starszej (względem mtime)
wersji? Wtedy zsh nie ma jak rozpoznać, że wersja skompilowana tego
pliku (/etc/zprofile.zwc) jest starsza i należy ładować plik źródłowy.
Sprawdź, czy masz ustawioną tę opcję: setopt | grep arg

> > A nie powinno przy takiej 'detekcji'. Czy aby poprzednio nie miałeś
> > czegoś innego w /etc/profile, niż jest obecnie?
> Nie. Nic nie było tam zmieniane. Zaraz poszukam przyczyny w liście pakietów 
> które dziś zupgreadowałem.

Na Solarisie zsh 3.0.6 też zwraca [./test.sh] - dlatego nie wydaje mi
się, żeby to zachowanie było kiedykolwiek inne. Tym bardziej, że
dyskusje na ten temat na liście zsh są sprzed 1999 roku. Takie
zachowanie zsh jest używane przez niektóre jego funkcje (stąd moja
zmiana w zprofile), inne jest w trybie emulacji sh. Musiałeś mieć coś
celowo zmienione w swojej konfiguracji (wcześniej wspomniany setopt w
zprofile), jeśli wcześniej to działało, bo samo z siebie moim zdaniem to
nie miało prawo działać (na gołej konfiguracji - a jak dobrze pamiętam
to tego wpisu w zprofile wcześniej, no trochę dawniej, nie było).

> SHELL obsysa bo .... nie działa.

No tak:/ Cofam setup/profile.

> > Gdy jest WCZYTYWANE (a nie uruchamiane!) jako konfiguracja.
> ,,.'' wczytuje czy uruchamia?

Wczytuje. Ale zsh jest robust i ustawia $0, CHYBA ŻE zrobisz:

~: setopt nofunctionargzero
~: . ./test.sh
[-zsh]

i tak to jest w zsh z ftpa (sam masz tę opcję w zprofile, najwyraźniej
jej nie czyta). Jednak ta opcja nie powinna być ustawiona do pracy
interaktywnej, dlatego z następną aktualizacją zsh, jeśli chcesz mieć
takie zachowanie jak obecnie, będziesz musiał wykomentować ostatnią
linijkę zprofile.

> Debian (nie mój tak btw, uczelniany, up-to-date) też jest zły?

Podczas source nie. Ale aktualny zsh zachowuje się identycznie, a to
jego zachowanie mnie zmyliło.

> ps. masz jabbera?

Mam nawet własny serwer;) Ale dopóki nie skompiluję sobie ekg2, to
raczej nie będę z tego korzystał na codzień.

-- 
GoTaR <priv0.onet.pl->gotar>
http://vfmg.sourceforge.net/



Więcej informacji o liście dyskusyjnej pld-devel-pl