Obecnie pracuję w szkole nad domową skorupą, dlatego jestem dzisiaj trochę ciekawy, w jaki sposób ustawiane są warniki muszli. Tak, to może być naprawdę ekscytujące!
W każdym razie oczywiście musimy poradzić sobie z przypadkiem, gdy nasza powłoka zostanie uruchomiona z pustym środowiskiem, tj. Poleceniem „env -i”. Dzięki env -i zmienna zewnętrzna environment jest absolutnie pusta, więc musimy zbudować podstawową ścieżkę, ścieżkę PWD i wszystko.
Naszym referencją jest csh, ponieważ jest to łatwe i proste. Po uruchomieniu csh z env -i, a następnie wydrukowaniu jego zmiennych, oto co możesz zobaczyć:
$ env -i csh
% set
addsuffix
argv ()
csubstnonl
cwd /Users/noesierra-velasquez
dirstack /Users/noesierra-velasquez
echo_style bsd
edit
gid 20
group staff
history 100
killring 30
owd
path (/usr/bin /bin)
prompt %
prompt2 %R?
prompt3 CORRECT>%R (y|n|e|a)?
shell /bin/tcsh
shlvl 1
status 0
tcsh 6.17.00
tty ttys001
uid 501
user noesierra-velasquez
version tcsh 6.17.00 (Astron) 2009-07-10 (x86_64-apple-darwin) options wide,nls,dl,al,kan,sm,rh,color,filec
% env
HOSTTYPE=intel-mac
VENDOR=apple
OSTYPE=darwin
MACHTYPE=x86_64
SHLVL=1
PWD=/Users/noesierra-velasquez
LOGNAME=noesierra-velasquez
USER=noesierra-velasquez
GROUP=staff
HOST=MacBook-Pro-de-Noe-Sierra-Velasquez.local
REMOTEHOST=
Ok, więc jak widać, nie ma zestawu HOME i wydaje mi się to absolutnie normalne. Jeśli wtedy wpiszesz cd
, dostaniesz cd: No home directory.
. Żyjemy w normalnym świecie.
Ale oto magia. Wpisz wewnątrz pustego pliku csh env -i zsh
. zsh się załaduje. Teraz wydrukuj wszystkie zmienne env. (Uwaga: działa idealnie, jeśli piszesz bezpośrednio env -i zsh
, nawet z poziomu zsh, robię to tutaj tylko po to, aby mieć całkowitą pewność, że nie ma podstępnej sztuczki z zsh wywoływania siebie czy cokolwiek innego)
% env -i zsh
$ env
HOME=/Users/noesierra-velasquez
LOGNAME=noesierra-velasquez
SHLVL=1
PWD=/Users/noesierra-velasquez
OLDPWD=/Users/noesierra-velasquez
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
_=/usr/bin/env
Łał ! Co się stało !? zsh wydaje się (i miał) sposób na odzyskanie $ HOME i $ OLDPWD z tego, co wydaje mi się czystą nicością. (przy okazji, jeśli ktoś nie wie, jestem prawie pewien, że używa paths.h, aby odzyskać swoją ścieżkę).
Oczywiście wiem, że „czysta nicość” nie jest realną możliwością, więc pytam was: Czy wiesz, jak Zsh wraca do HOME i OLDPWD?
Dziękujemy za cierpliwość i życzę miłego dnia! :)
zsh
faktycznie robi to powłoka, możesz spojrzeć na kod źródłowy zsh.sourceforge.net/Arc/source.html .. na początku może trochę, ale zawsze świetnie jest mieć referencje podczas uczenia się czegoś ekscytujące :)
/Users/noesierra-velasquez
trakcie wykonywania tego testu? Prawdopodobnie robi tylkopwd
(lub równoważny) i zapełnia $ PWD i $ OLDPWD z bieżącego katalogu. Jeśli chodzi o $ HOME, może to wyglądać w górę (podobnie jak csh robi, gdy się odwołujesz~scott
).