Quindi Wikipedia (link) mi dice che il comando pwd
è l'abbreviazione di "stampa directory di lavoro" e questo ha senso.
Ma per la variabile d'ambiente, la "P" deve essere l'acronimo di qualcos'altro oltre a print.
Sento persone che parlano della "directory di lavoro corrente", che suona meglio ed è più intuitiva, ma la variabile di ambiente sembra essere chiamata $PWD e non $CWD. Nessuno dice mai "Hai controllato la variabile della directory di lavoro di stampa?".
Attualmente sto giocando con il server di applicazioni Web uWSGI e durante l'esecuzione mi dice (sulla pagina delle statistiche di uWSGI):
"cwd":"/home/velle/greendrinks",
quindi ovviamente a loro piace l'(acronimo più intuitivo) cwd
su pwd
.
Immagino che sto cercando di capire se ho frainteso qualcosa, o se si tratta solo di aver dato alla variabile d'ambiente un nome non intuitivo?
Risposta accettata:
Dipende da cosa stai facendo. Prima di tutto, $PWD
è una variabile di ambiente e pwd
è una shell incorporata o un binario effettivo:
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
Ora, il builtin bash stamperà semplicemente il valore corrente di $PWD
a meno che non usi il -P
bandiera. Come spiegato in help pwd
:
pwd: pwd [-LP]
- Stampa il nome della directory di lavoro corrente.
Opzioni:
-L
- stampa il valore di
$PWD
se nomina la directory di lavoro corrente
-P
- stampa la directory fisica, senza alcun collegamento simbolico
Per impostazione predefinita, "pwd" si comporta come se fosse specificato "-L".
Il pwd
binary, d'altra parte, ottiene la directory corrente tramite getcwd(3)
chiamata di sistema che restituisce lo stesso valore di readlink -f /proc/self/cwd
.
Per illustrare, prova a spostarti in una directory che è un collegamento a un'altra:
$ 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
Quindi, in conclusione, sui sistemi GNU (come Ubuntu), pwd
e echo $PWD
sono equivalenti a meno che non utilizzi il -P
opzione, ma /bin/pwd
è diverso e si comporta come pwd -P
.
Fonte https://askubuntu.com/a/476633/291937