Konzeptionelle Ebene
Wenn Sie einen Prozess von Ihrer Shell aus starten, entspricht das aktuelle Arbeitsverzeichnis des Prozesses dem aktuellen Arbeitsverzeichnis Ihrer Shell. Im Kontext der Shell ist das aktuelle Arbeitsverzeichnis der Speicherort, an dem Sie sich derzeit befinden.
Das aktuelle Arbeitsverzeichnis eines Prozesses wird verwendet, um relative Pfade zu interpretieren. Wenn beispielsweise das aktuelle Arbeitsverzeichnis Ihrer Shell war /home/reneund Sie ls ..von der Shell ausgeführt wurden, wird das aktuelle Arbeitsverzeichnis des Prozesses /home/renezum Auflösen ..in verwendet /home.
Sie können die aktuellen Arbeitsverzeichnisse aller auf Ihrem System ausgeführten Prozesse mit anzeigen lsof | grep '\scwd\s'(beachten Sie, dass Sie wahrscheinlich root sein müssen, um die Prozesse anderer Benutzer zu sehen.) Dies kann Ihnen eine Vorstellung davon geben, wie sich aktuelle Arbeitsverzeichnisse auf die beziehen Prozesse, die auf Ihrem System ausgeführt werden.
Programmebene
Das aktuelle Arbeitsverzeichnis der Shell ist das Verzeichnis, das Sie mit den integrierten Shell-Funktionen anzeigen pwdund ändern cd. Diese Befehle rufen Systemaufrufe wie getcwdund auf chdir, die mit dem aktuellen Arbeitsverzeichnis Ihrer Shell funktionieren.
Am bashBeispiel führt das cdintegrierte Gerät schließlich diese Zeile aus:
if (chdir (nolinks ? newdir : tdir) == 0)
und das pwdeingebaute führt schließlich diese Linie aus:
the_current_working_directory = getcwd (0, PATH_MAX);
Die Shell ist nur ein praktisches Beispiel für die Verwendung des aktuellen Arbeitsverzeichnisses. Dieselben Systemaufrufe werden auch von anderen Programmen verwendet. Ein Programm kann sein aktuelles Arbeitsverzeichnis in ändern, /usrund alle relativen Pfade, die das Programm verwendet, beginnen im /usrVerzeichnis.
Kernel-Ebene
Das aktuelle Arbeitsverzeichnis eines Prozesses wird vom Kernel gespeichert. Linux speichert es in dem pwdMitglied eines, fs_structauf das das fsMitglied eines zeigt task_struct. Das pwdMitglied ist eine pathStruktur, die auf Informationen über mount ( vfsmount) und den Speicherort des Verzeichnisses im Dateisystem ( dentry) verweist . Jedem Prozess ist ein Prozess task_structzugeordnet.
Die chdirund getcwdSystemaufrufe ändern und Abrufen von Informationen in pwd.