zsh robi to inaczej z $0
Arkadiusz Miskiewicz
arekm w pld-linux.org
Nie, 11 Kwi 2004, 12:35:04 CEST
Dnia Sunday 11 of April 2004 11:21, Tomasz Pala napisał:
> 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.
No widzisz, na przyszłość tak zacięcie nie broń swego bez sprawdzenia ;-)
> 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
Nie była ustawiona. Dałem zcompile /etc/zprofile ale po odpaleniu konsole(kde)
mając /bin/zsh jako shella w passwd:
$ setopt |grep arg
zsh: done setopt |
zsh: exit 1 grep arg
(nie ma tej opcji ustawionej)
$ sudo zsh
$ zcompile /etc/zprofile
$ ls -l /etc/zprofile*
-rw-r--r-- 1 root root 61 2004-04-11 01:18 /etc/zprofile
-r--r--r-- 1 root root 360 2004-04-11 12:27 /etc/zprofile.zwc
(dla pewności przekompilowane jeszcze raz)
$ exit
$ . /etc/zprofile
(dziwne co? najpierw jest ustawienie setopt no_function_argzero, potem
wczytanie /etc/profile, które nic nie daje)
$ cat /etc/zprofile
# for login shell
setopt no_function_argzero
. /etc/profile
$ setopt |grep arg
nofunctionargzero
(a opcja się ustawia tak, że ...)
$ . /etc/zprofile
[arekm w arm ~]$
(... drugie wywołanie . /etc/zprofile działa jak należy)
su na samego siebie - wtedy jest ok
$ su - arekm
Password:
[arekm w arm ~]$
Już nie mam pomysłu :/
> 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.
ktoś mi to podesłał na priva:
== ./test.sh ==
echo "[$0]"
== polecenie: ==
while read l;do ls -l $l; ( $l -c ". ./test.sh;");done </etc/shells
== Solaris na Sparcu: ==
-r-xr-xr-x 2 root root 299496 Apr 7 2002 /sbin/sh*
[/sbin/sh]
-r-xr-xr-x 4 root root 95488 Apr 7 2002 /bin/sh*
[/bin/sh]
-r-xr-xr-x 2 root bin 159344 Dec 9 2002 /bin/csh*
/usr/local/bin0/.: Permission denied
-r-xr-xr-x 3 root bin 201044 Mar 14 2003 /bin/ksh*
[/bin/ksh]
-r-xr-xr-x 1 root bin 474736 Mar 2 2002 /bin/zsh*
[./test.sh]
i tylko zsh robi to inaczej :/ No ale w porządku, może robić sobie inaczej
byle działało z naszym /etc/profile.
> No tak:/ Cofam setup/profile.
Gut.
> Wczytuje. Ale zsh jest robust i ustawia $0, CHYBA ŻE zrobisz:
>
> ~: setopt nofunctionargzero
> ~: . ./test.sh
> [-zsh]
Tylko to nie działa (patrz wyżej na moje eksperymenty z . /etc/zprofile)
--
Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org, 1024/3DB19BBD, JID: arekm.jabber.org, PLD/Linux
Więcej informacji o liście dyskusyjnej pld-devel-pl