the current working directory
Imagine standing in one room of a huge building. When you say "the kitchen," you mean the kitchen relative to where you are now, not some absolute map coordinate. The current working directory is exactly your "where I am standing" inside the directory tree. It is the folder a process is currently sitting in, and it is the starting point from which all relative paths are interpreted.
Every running process carries its own current working directory as part of its state, the OS remembers it for you. When you type or call a relative path like data/report.txt, the system silently glues your current working directory onto the front of it to get a full path, then walks the tree from there. A change-directory operation moves you to a different folder by updating this stored value; from then on the same relative names point somewhere new. Because the cwd belongs to a process, changing directory inside one program (say a shell) does not move any other program, and a child process normally inherits the parent's cwd at the moment it is created.
Why it matters: the working directory is what makes short, convenient relative paths possible, you do not have to type the full route from the root every time. But that convenience is also the catch: the meaning of a relative path silently depends on this hidden piece of process state. A program that opens config.txt assuming it sits in a particular folder will fail if launched from elsewhere. When precision matters, especially in scripts and services, prefer absolute paths or set the working directory explicitly rather than trusting wherever the program happened to start.
In a shell, pwd prints /home/alice. Now open notes.txt resolves to /home/alice/notes.txt. After cd projects the working directory becomes /home/alice/projects, and the same open notes.txt now means /home/alice/projects/notes.txt.
The cwd is the hidden prefix the OS adds to every relative path.
The cwd is per-process state, changing it in one program affects only that program. Because relative paths depend on it invisibly, prefer absolute paths in scripts and services for reliability.