GNU/Linux >> Linux の 問題 >  >> Linux

$ pwd? (vs現在の作業ディレクトリ)?

したがって、ウィキペディア(リンク)は、コマンドpwd 「printworkingdirectory」の略で、それは理にかなっています。

ただし、環境変数の場合、「P」は印刷以外の頭字語である必要があります。

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

私は現在、WebアプリケーションサーバーuWSGIで遊んでいますが、実行すると(uWSGI統計ページで)次のように表示されます:

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

だから彼らは明らかに(より直感的な頭字語)cwdが好きです pwd以上 。

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

承認された回答:

それはあなたがしていることに依存します。まず、$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 一方、binaryは、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など)では、pwd およびecho $PWD -Pを使用しない限り、同等です オプションですが、/bin/pwd は異なり、pwd -Pのように動作します 。

ソース https://askubuntu.com/a/476633/291937


Linux
  1. Pwdと/bin/ pwdの奇妙な違いは?

  2. $(pwd)または$ pwdを使用する方が良いですか?

  3. 親プロセスの作業ディレクトリを設定するにはどうすればよいですか?

  1. シェルスクリプトの現在のディレクトリ?

  2. 現在のディレクトリでスクリプトを入手できません

  3. 現在のディレクトリをプッシュ/ポップしますか?

  1. 現在のディレクトリを返す Linux/UNIX sh シェルのコマンドはどれですか?

  2. sftp rmdir が機能しないのはなぜですか?

  3. sudo -i ただし、現在の作業ディレクトリを保持する