Cấp khái niệm
Khi bạn bắt đầu một tiến trình từ shell của mình, thư mục làm việc hiện tại của tiến trình này giống như thư mục làm việc hiện tại của shell của bạn. Trong ngữ cảnh của trình bao, thư mục làm việc hiện tại là vị trí bạn hiện đang "tại."
Thư mục làm việc hiện tại của bất kỳ quá trình được sử dụng để giải thích các đường dẫn tương đối. Ví dụ, nếu thư mục làm việc hiện tại của shell của bạn đã /home/rene
và bạn chạy ls ..
từ vỏ, thư mục làm việc hiện hành của quá trình, /home/rene
, sẽ được sử dụng để quyết tâm ..
đến /home
.
Bạn có thể xem các thư mục làm việc hiện tại của tất cả các quy trình đang chạy trên hệ thống của bạn lsof | grep '\scwd\s'
(lưu ý rằng có lẽ bạn sẽ cần phải root để xem các quy trình của người dùng khác.) Điều này có thể cho bạn biết về cách các thư mục làm việc hiện tại liên quan đến các quy trình đang chạy trên hệ thống của bạn.
Cấp chương trình
Thư mục làm việc hiện tại của shell là thư mục bạn nhìn thấy và sửa đổi với shell được tích hợp sẵn pwd
và cd
tương ứng. Các lệnh này gọi các cuộc gọi hệ thống như getcwd
và chdir
hoạt động với thư mục làm việc hiện tại của shell của bạn.
Sử dụng bash
làm ví dụ, cd
cuối cùng tích hợp chạy dòng này:
if (chdir (nolinks ? newdir : tdir) == 0)
và tích pwd
hợp cuối cùng chạy dòng này:
the_current_working_directory = getcwd (0, PATH_MAX);
Shell chỉ là một ví dụ thuận tiện cho việc sử dụng thư mục làm việc hiện tại; các cuộc gọi hệ thống tương tự cũng được sử dụng bởi các chương trình khác. Một chương trình có thể thay đổi thư mục làm việc hiện tại của nó thành /usr
và bất kỳ đường dẫn tương đối nào mà chương trình sử dụng sẽ bắt đầu từ /usr
thư mục,
Cấp hạt nhân
Thư mục làm việc hiện tại của một tiến trình được lưu trữ bởi kernel. Linux lưu trữ nó trong pwd
thành viên của một fs_struct
trỏ đến bởi fs
thành viên của một task_struct
. Thành pwd
viên là một path
cấu trúc, trỏ đến thông tin về mount ( vfsmount
) và vị trí của thư mục trong hệ thống tập tin ( dentry
). Mỗi quá trình có một task_struct
liên kết với nó.
Các cuộc gọi chdir
và getcwd
hệ thống sửa đổi và lấy thông tin trong pwd
.