GNU/Linux >> Znalost Linux >  >> Linux

$pwd? (vs. aktuální pracovní adresář)?

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


Linux
  1. Je lepší použít $(pwd) nebo $pwd?

  2. Jak nastavím pracovní adresář nadřazeného procesu?

  3. proč nefunguje sftp rmdir?

  1. Chyba shell-init při načítání aktuálního adresáře [Oprava]

  2. sudo -i, ale ponechat aktuální pracovní adresář

  3. Co je výstupem pwd?

  1. Pwd bez symbolických odkazů?

  2. Podivný rozdíl mezi Pwd a /bin/pwd?

  3. Jak spustím program s jiným pracovním adresářem, než je aktuální, z prostředí Linux?