GNU/Linux >> Belajar Linux >  >> Linux

$pwd? (vs Direktori Kerja Saat Ini)?

Jadi Wikipedia (tautan) memberi tahu saya bahwa perintah pwd adalah kependekan dari "print working directory", dan itu masuk akal.

Tetapi untuk variabel lingkungan, "P" harus merupakan akronim untuk sesuatu selain print.

Saya mendengar orang berbicara tentang "direktori kerja saat ini", yang terdengar lebih baik dan lebih intuitif, tetapi variabel lingkungan tampaknya masih disebut $PWD, dan bukan $CWD. Tidak ada yang pernah mengatakan “Apakah Anda memeriksa variabel direktori kerja cetak?”.

Saat ini saya sedang bermain-main dengan server aplikasi web uWSGI, dan ketika menjalankannya memberitahu saya (pada halaman statistik uWSGI):

"cwd":"/home/velle/greendrinks",

jadi mereka jelas menyukai (akronim yang lebih intuitif) cwd lebih dari pwd .

Saya kira saya mencoba mencari tahu apakah saya salah memahami sesuatu, atau apakah itu hanya masalah memberi variabel lingkungan nama yang tidak intuitif?

Jawaban yang Diterima:

Itu tergantung pada apa yang Anda lakukan. Pertama-tama, $PWD adalah variabel lingkungan dan pwd adalah shell builtin atau biner yang sebenarnya:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

Sekarang, bash builtin hanya akan mencetak nilai saat ini dari $PWD kecuali jika Anda menggunakan -P bendera. Seperti yang dijelaskan di help pwd :

pwd: pwd [-LP]

    Cetak nama direktori kerja saat ini.

    Opsi:

      -L

          cetak nilai $PWD jika nama direktori kerja saat ini

      -P

          mencetak direktori fisik, tanpa tautan simbolik apa pun

    Secara default, 'pwd' berperilaku seolah-olah '-L' ditentukan.

pwd biner, di sisi lain, mendapatkan direktori saat ini melalui getcwd(3) panggilan sistem yang mengembalikan nilai yang sama dengan readlink -f /proc/self/cwd .
Sebagai ilustrasi, coba pindah ke direktori yang merupakan tautan ke direktori lain:

$ 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

Jadi, kesimpulannya, pada sistem GNU (seperti Ubuntu), pwd dan echo $PWD setara kecuali Anda menggunakan -P pilihan, tapi /bin/pwd berbeda dan berperilaku seperti pwd -P .

Sumber https://askubuntu.com/a/476633/291937


Linux
  1. Pwd Tanpa Symlink?

  2. Bagaimana cara mengatur direktori kerja dari proses induk?

  3. Direktori skrip Shell saat ini?

  1. Dorong/pop direktori saat ini?

  2. Perintah mana di shell Linux/UNIX sh yang mengembalikan direktori saya saat ini?

  3. mengapa sftp rmdir tidak berfungsi?

  1. Perbedaan Aneh Antara Pwd Dan /bin/pwd?

  2. sudo -i tetapi pertahankan direktori kerja saat ini

  3. Apa yang dihasilkan pwd?