GNU/Linux >> LINUX-Kenntnisse >  >> Linux

$pwd? (im Vergleich zum aktuellen Arbeitsverzeichnis)?

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.

sein

Ich 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


Linux
  1. Seltsamer Unterschied zwischen Pwd und /bin/pwd?

  2. Ändern Sie das Arbeitsverzeichnis in der Shell mit einem Python-Skript

  3. Aktuelles Verzeichnis des Shell-Skripts?

  4. kann kein Skript in einem aktuellen Verzeichnis beziehen

  5. push/pop aktuelles Verzeichnis?

Der Linux-Befehl pwd

Pwd-Befehl in Linux (Aktuelles Arbeitsverzeichnis)

Finden Sie das aktuelle Arbeitsverzeichnis eines Prozesses mit Pwdx in Linux

Shell-Init-Fehler beim Abrufen des aktuellen Verzeichnisses [Fix]

Wie drucke ich das Arbeitsverzeichnis mit dem Linux-Befehl pwd?

Abgekürztes aktuelles Verzeichnis in Shell-Eingabeaufforderung?