zsh robi to inaczej z $0

Arkadiusz Miskiewicz arekm w pld-linux.org
Nie, 11 Kwi 2004, 14:26:00 CEST


Dnia Sunday 11 of April 2004 13:13, Tomasz Pala napisał:

> > $ . /etc/zprofile
> > (dziwne co? najpierw jest ustawienie setopt no_function_argzero, potem
> > wczytanie /etc/profile, które nic nie daje)
>
> Nie dziwne, wręcz całkiem logiczne. Ustawienie opcji powoduje, że $0 nie
> jest _zmieniane_ podczas robienia source, zatem ma _poprzednią_ wartość,
> czyli "/etc/zprofile". Bez ustawienia by było "/etc/profile".
OK. To jeszcze pozostaje jeden problem do rozwikłania.

> > . /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)
>
> Bo dopiero tutaj `. /etc/zprofile` nie ustawiło $0 na "/etc/zprofile", a
> wewnątrz `. /etc/profile` nie ustawiło $0 na "/etc/profile".
>
> > Już nie mam pomysłu :/
>
> A ja wiem! :D Po prostu konsole uruchamia zsh zamiast zsh -l, czyli
> zwykłego interaktywnego shella zamiast login shella. Wtedy ten ostatni
> nie czyta plików profile (tyle razy cytowałeś zprofile, że powinieneś
> zauważyć 'for LOGIN shell';P). Już chciałem się pytać, po co w ogóle
> robisz '. /etc/profile', ale chyba wiem - używasz badziewnego *terma;P
Dobra, czyli różnica pomiędzy zsh, a zsh -l jest taka, że ten pierwszy nie 
czyta /etc/zprofile natomiast ten drugi czyta right?

Więc jaka jest różnica pomiędzy zsh -l, a moim ręcznym wklepaniem zsh + 
dodatkowo wklepaniem . /etc/zprofile? Powinno dać taki sam rezultat jeśli 
chodzi o czytanie /etc/zprofile tak (a tym samym /etc/profile oraz 
rozpoznanie właściwego shella bazując na $0) ? ... a daje inny :/

> I działa. Tylko zgodnie z definicją profile - tylko dla login shella.
> Błąd masz zatem w konsole.
Dobra, dałem sobie w konsole/kde zsh -l i jest ok ale chciałbym zrozumieć 
powyżej opisaną rzecz :)

> Jak się ładnie cofa commita z HEAD? Jakiś merge czy może jest rollback?
Nie ma rollbacka ;/

>
> > > 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)
>
> A zrobiłeś tak, jak tutaj napisałem? Ustaw w command line i uruchom.
> Eksperymenty wyszły źle, bo masz złe środowisko - dobrze by było w
> terminalu oraz np. xtermie (wołanym zgodnie z xterm.desktop, czyli
> xterm -ls), błędne zachowanie konsole z terminalami to klasyka.
Po zalogowaniu się na konsoli linuxowej jest ok.

-- 
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