Wikipedie (odkaz) mi tedy říká, že příkaz pwd
je zkratka pro „print working directory“ a to dává smysl.
Ale pro proměnnou prostředí musí být „P“ zkratka pro něco jiného než print.
Slyšel jsem lidi mluvit o „aktuálním pracovním adresáři“, který zní lépe a je intuitivnější, ale přesto se zdá, že proměnná prostředí se nazývá $PWD, a ne $CWD. Nikdo nikdy neřekne „Zkontrolovali jste proměnnou tiskového pracovního adresáře?“.
Momentálně si hraji s webovým aplikačním serverem uWSGI a při spuštění mi to říká (na stránce statistik uWSGI):
"cwd":"/home/velle/greendrinks",
takže se jim evidentně líbí (intuitivnější zkratka) cwd
přes pwd
.
Myslím, že se snažím přijít na to, jestli jsem něčemu nerozuměl, nebo jestli jde jen o to, dát proměnné prostředí neintuitivní název?
Přijatá odpověď:
To záleží na tom, co děláte. Za prvé, $PWD
je proměnná prostředí a pwd
je vestavěný shell nebo skutečný binární soubor:
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
Nyní vestavěný bash jednoduše vytiskne aktuální hodnotu $PWD
pokud nepoužijete -P
vlajka. Jak je vysvětleno v help pwd
:
pwd: pwd [-LP]
Vytiskněte název aktuálního pracovního adresáře.
Možnosti:
-L
vytisknout hodnotu
$PWD
pokud pojmenovává aktuální pracovní adresář
-P
vytiskněte fyzický adresář bez jakýchkoli symbolických odkazů
Ve výchozím nastavení se ‚pwd‘ chová, jako kdyby bylo zadáno ‚-L‘.
pwd
binární, na druhé straně, získává aktuální adresář prostřednictvím getcwd(3)
systémové volání, které vrací stejnou hodnotu jako readlink -f /proc/self/cwd
.
Pro ilustraci se zkuste přesunout do adresáře, který je odkazem na jiný:
$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun 4 11:22 foo
lrwxrwxrwx 1 terdon terdon 4 Jun 4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo
Takže na závěr, na systémech GNU (jako je Ubuntu), pwd
a echo $PWD
jsou ekvivalentní, pokud nepoužijete -P
možnost, ale /bin/pwd
je jiný a chová se jako pwd -P
.
Zdroj https://askubuntu.com/a/476633/291937