$ PWD nedir? (vs mevcut çalışma dizini)


27

Yani Wikipedia ( link ) komutun pwd"çalışma dizini yazdır" için kısa olduğunu ve bunun anlamlı olduğunu söyledi.

Ancak çevre değişkeni için, "P", baskıdan başka bir şeyin kısaltması olmalıdır.

İnsanların "mevcut çalışma dizini" hakkında konuştuğunu duydum, kulağa daha iyi geliyor ve daha sezgisel. Ancak, ortam değişkeni $ PWD, $ CWD olarak adlandırılıyor. Hiç kimse "Yazdırma çalışma dizini değişkenini kontrol ettiniz mi?"

Şu anda uWSGI web uygulama sunucusu ile uğraşıyorum ve çalıştırırken bana şunu söylüyor: (uWSGI istatistik sayfasında):

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

Bu yüzden açıkça (daha sezgisel kısaltma) cwdüzerinde seviyorum pwd.

Sanırım bir şeyi yanlış mı anladım ya da sadece çevre değişkenine sezgisel olmayan bir isim vermenin bir sorunu olup olmadığını anlamaya çalışıyorum.


5
Mevcut Çalışma Dizini?
DarioP

3
Sanırım sadece biraz fazla düşündün. $PWDeşittir `pwd`ve bu yeterince haklıydı.
diğer adam

1
Başka bir tahmin: Çalışma Dizini İşlemi?
öküz

Yanıtlar:


23

Bu ne yaptığınıza bağlı. Her şeyden önce, $PWDbir ortam değişkeni ve pwdbir kabuk yerleşik ya da gerçek bir ikili:

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

Şimdi, bash yerleşik kodu bayrağı $PWDkullanmadığınız sürece geçerli değeri basacaktır -P. Açıklandığı gibi help pwd:

pwd: pwd [-LP]

    Geçerli çalışma dizininin adını yazdırın.

    Seçenekler:

      -L
          $PWD Geçerli çalışma dizinini isimlendirirse değerini yazdırabilir
      -P
          sembolik bağlar olmadan fiziksel dizini yazdır

    Varsayılan olarak, 'pwd' '-L' belirtilmiş gibi davranır.

pwdİkili, diğer taraftan, içinden akım dizini alır getcwd(3)aynı değeri döndürür sistem çağrısı readlink -f /proc/self/cwd. Göstermek için başka birine link olan bir dizine geçmeyi deneyin:

$ 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

Dolayısıyla, sonuç olarak, GNU sistemlerinde (Ubuntu gibi) pwdve echo $PWDsiz -Pseçeneği kullanmadığınız sürece eşdeğerdir , ancak /bin/pwdfarklıdır ve davranır pwd -P.

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


1
@llua Hiçbir şey PWDbir ortam değişkeni olmayı yasaklamaz . Aslında tüm kabukları olmasa da çoğu zaman varsayılan durum budur ve çocuk işlemlerini sağlamak mantıklıdır.
jlliagre

1
İnsanların neden indirilmediğini merak ediyorum, bu iyi bir cevap gibi görünüyor ve tamamen açıkladı.
Mads Skjern

2
@MadsSkjern Yerleşiklerin çoğu POSIX standardı tarafından komut olarak da alınabilir. Bu, bir kabuk başlatmaya gerek kalmadan doğrudan diğer programlardan çağrılmasını sağlamaktır.
jlliagre

2
Bu bana soruyu gerçekten cevaplamıyor. Asıl soru, $PWDve pwd(ki inancımdan önce U&L'de zaten ele alınmıştı) arasındaki farklarla değil , " PWD" değişkenini adlandırmaya neden olan nedenlerle ilgili .
John WH Smith

1
@Thushi Muhtemelen daha fazla haklısın. PWD ksh88hangi belge olarak tanıtıldı : PWD The present working directory set by the cd command.Cevabınıza bunu eklemelisiniz.
jlliagre

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.