$ PWDとは何ですか?(vs現在の作業ディレクトリ)


27

したがって、ウィキペディア(link)は、このコマンドpwdが「作業ディレクトリの印刷」の略であり、それが理にかなっていることを教えてくれます。

しかし、環境変数の場合、「P」はprint以外のものの頭字語でなければなりません。

「現在の作業ディレクトリ」について話す人の声を聞きます。これはより良く聞こえ、より直感的ですが、それでも環境変数は$ CWDではなく$ PWDと呼ばれるようです。「印刷作業ディレクトリ変数を確認しましたか?」と言う人はいません。

私は現在、WebアプリケーションサーバーuWSGIで遊んでいますが、実行中に(uWSGIの統計ページで)通知されます。

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

明らかに(より直感的な頭字語)のような彼らがそうcwd超えますpwd

私は何かを誤解しているか、それとも環境変数に直感的でない名前を付けただけなのかを把握しようとしているのでしょうか?


5
作業ディレクトリを提示しますか?
DarioP 14

3
あなたはそれを考え直しているだけだと思う​​。$PWDはと同等`pwd`であり、それは十分な正当化でした。
その他の男14

1
別の推測:作業ディレクトリを処理しますか?
oxfn

回答:


23

それはあなたが何をしているかに依存します。まず$PWD、環境変数でpwdあり、組み込みのシェルまたは実際のバイナリです。

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

これで、bashビルトインは$PWD-Pフラグを使用しない限り、単に現在の値を出力します。で説明したようにhelp pwd

pwd: pwd [-LP]

    現在の作業ディレクトリの名前を出力します。

    オプション:

      -L
          $PWD 現在の作業ディレクトリを指定する場合の値を出力します
      -P
          シンボリックリンクなしで物理ディレクトリを印刷します

    デフォルトでは、「pwd」は「-L」が指定されているかのように動作します。

pwdバイナリは、一方を介してカレントディレクトリを取得し、getcwd(3)同じ値を返すシステムコールreadlink -f /proc/self/cwd。説明のために、別のディレクトリへのリンクであるディレクトリに移動してみてください。

$ 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

したがって、結論として、GNUシステム(Ubuntuなど)ではpwdecho $PWDこの-Pオプションを使用しない限り同等ですが、/bin/pwd異なり、動作はのようになりpwd -Pます。

ソース /ubuntu//a/476633/291937


1
@llua PWD環境変数を禁止するものはありません。実際には、すべてではないにしてもほとんどのシェルでデフォルトのケースであり、子プロセスに提供することは理にかなっています。
jlliagre 14

1
人々がなぜ投票したのだろうか、それは良い答えのように思え、徹底的に説明された。
マッドスキャーン14

2
@MadsSkjernほとんどの組み込み関数は、コマンドとしても使用できるようにPOSIX標準で必要です。これは、シェルを起動することなく、他のプログラムから直接それらを呼び出すことができるようにするためです。
jlliagre 14

2
これは本当に私に質問に答えていません。問題は実際には$PWDandとの違いに関するものではなくpwd(これは信じる前にU&Lで既に説明されていました)、変数 " PWD"の命名に至った理由に関するものです。
ジョンWHスミス14

1
@Thushiあなたはおそらく正しいです。PWDは次のksh88文書で紹介されましたPWD The present working directory set by the cd command.。これを返信に追加する必要があります。
jlliagre 14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.