GNU/Linux >> Linux Esercitazione >  >> Linux

$pwd? (rispetto alla directory di lavoro corrente)?

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


Linux
  1. È meglio usare $(pwd) o $pwd?

  2. Come eseguo un programma con una directory di lavoro diversa da quella corrente, dalla shell di Linux?

  3. Come imposto la directory di lavoro del processo genitore?

  4. push/pop directory corrente?

  5. Quale comando nella shell sh di Linux/UNIX restituisce la mia directory corrente?

Il comando pwd Linux

Comando Pwd in Linux (directory di lavoro corrente)

Trova la directory di lavoro corrente di un processo utilizzando Pwdx in Linux

Come stampare la directory di lavoro usando il comando pwd di Linux?

Directory corrente abbreviata nel prompt della shell?

non può generare lo script in una directory corrente