So sagt mir Wikipedia (link), dass der Befehl pwd
ist die Abkürzung für „Arbeitsverzeichnis drucken“, und das macht Sinn.
Aber für die Umgebungsvariable muss das „P“ ein Akronym für etwas anderes als print.
seinIch höre Leute über „aktuelles Arbeitsverzeichnis“ sprechen, was besser klingt und intuitiver ist, aber die Umgebungsvariable scheint immer noch $PWD und nicht $CWD zu heißen. Niemand sagt jemals „Haben Sie die Variable für das Druck-Arbeitsverzeichnis überprüft?“.
Ich spiele gerade mit dem Webanwendungsserver uWSGI herum, und wenn er läuft, sagt er mir (auf der uWSGI-Statistikseite):
"cwd":"/home/velle/greendrinks",
daher mögen sie offensichtlich das (intuitivere Akronym) cwd
über pwd
.
Ich schätze, ich versuche herauszufinden, ob ich etwas falsch verstanden habe oder ob es nur darum geht, der Umgebungsvariable einen nicht intuitiven Namen gegeben zu haben?
Akzeptierte Antwort:
Das hängt davon ab, was Sie tun. Zuerst einmal $PWD
ist eine Umgebungsvariable und pwd
ist eine eingebaute Shell oder eine tatsächliche Binärdatei:
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
Jetzt gibt die eingebaute Bash einfach den aktuellen Wert von $PWD
aus es sei denn, Sie verwenden das -P
Flagge. Wie in help pwd
erklärt :
pwd: pwd [-LP]
- Den Namen des aktuellen Arbeitsverzeichnisses ausgeben.
Optionen:
-L
- den Wert von
$PWD
ausgeben wenn es das aktuelle Arbeitsverzeichnis nennt
-P
- gibt das physische Verzeichnis ohne symbolische Links aus
Standardmäßig verhält sich „pwd“ so, als ob „-L“ angegeben wäre.
Das pwd
Binary hingegen bekommt das aktuelle Verzeichnis durch getcwd(3)
Systemaufruf, der denselben Wert zurückgibt wie readlink -f /proc/self/cwd
.
Versuchen Sie zur Veranschaulichung, in ein Verzeichnis zu wechseln, das ein Link zu einem anderen ist:
$ 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
Also, abschließend, auf GNU-Systemen (wie Ubuntu), pwd
und echo $PWD
sind äquivalent, es sei denn, Sie verwenden das -P
Option, sondern /bin/pwd
ist anders und verhält sich wie pwd -P
.
Quelle https://askubuntu.com/a/476633/291937