Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인
pwd는 현재 작업 디렉터리(Current Working Directory)의 경로를 출력하는 명령입니다. 터미널에서 지금 어느 디렉터리에 있는지 확인하거나, 셸 스크립트에서 상대 경로의 기준 위치를 점검할 때 사용합니다.
일반적으로 옵션 없이 실행하면 충분하지만, 심볼릭 링크가 포함된 경로에서는 논리적 경로를 보여주는 -L과 실제 파일 시스템 경로를 보여주는 -P의 차이를 알아두는 것이 중요합니다.
pwd 명령어란?
pwd는 print working directory의 약자입니다. 현재 셸이나 프로세스가 작업 기준으로 사용하는 디렉터리의 절대 경로를 출력합니다.
pwd
예를 들어 현재 위치가 사용자의 프로젝트 디렉터리라면 다음과 같이 출력될 수 있습니다.
/home/user/projects/web-app
현재 작업 디렉터리는 상대 경로를 해석하는 기준입니다. 같은 config/settings.ini라는 상대 경로도 어느 디렉터리에서 명령을 실행하느냐에 따라 다른 파일을 가리킵니다.
기본 문법과 사용법
pwd [옵션]
다른 경로를 인수로 받는 명령이 아니므로 보통 다음처럼 단독으로 실행합니다.
pwd cd /var/log pwd
두 번째 pwd는 이동이 성공했다면 /var/log를 출력합니다. cd가 실패하면 현재 작업 디렉터리는 바뀌지 않습니다.
-L과 -P의 차이
현재 위치까지 오는 경로에 심볼릭 링크가 포함되어 있으면 논리적 경로와 물리적 경로가 다를 수 있습니다.
| 옵션 | 동작 |
|---|---|
-L, --logical |
셸이 기억하는 논리적 경로를 사용합니다. 이동할 때 사용한 심볼릭 링크 이름이 경로에 남을 수 있습니다. |
-P, --physical |
심볼릭 링크를 해석한 물리적 디렉터리 경로를 출력합니다. |
-L로 논리적 경로 확인하기
다음처럼 /srv/current가 실제 배포 디렉터리를 가리키는 심볼릭 링크라고 가정하겠습니다.
cd /srv/current pwd -L
셸이 논리적 위치를 정상적으로 관리한다면 다음처럼 사용자가 입력한 링크 경로가 유지될 수 있습니다.
/srv/current
-P로 실제 경로 확인하기
pwd -P
/srv/current가 /srv/releases/2026-09를 가리킨다면 물리적 경로는 다음과 같이 출력될 수 있습니다.
/srv/releases/2026-09
배포 링크가 실제로 어느 디렉터리를 가리키는지 확인하거나, 심볼릭 링크 이름에 의존하지 않는 경로가 필요할 때 -P가 유용합니다.
셸 내장 pwd와 외부 pwd
Bash를 비롯한 여러 셸은 pwd를 내장 명령으로 제공합니다. 시스템에는 GNU Coreutils의 외부 실행 파일도 함께 설치되어 있을 수 있습니다.
type -a pwd command -V pwd
환경에 따라 다음처럼 셸 내장 명령과 외부 실행 파일이 모두 표시될 수 있습니다.
pwd is a shell builtin pwd is /usr/bin/pwd
셸 내장 명령을 사용하는 이유
셸은 cd로 디렉터리를 이동할 때 자신의 작업 디렉터리와 논리적 경로를 직접 관리합니다. 따라서 내장 pwd는 별도의 프로세스를 시작하지 않고 그 정보를 출력할 수 있습니다.
-L과 -P는 일반적으로 내장 명령과 외부 명령 모두에서 사용할 수 있지만, 세부 옵션은 셸과 운영체제에 따라 다를 수 있습니다.
외부 명령을 명시적으로 실행하기
GNU Coreutils 실행 파일의 동작을 확인하려면 전체 경로를 지정할 수 있습니다. 실제 위치는 배포판에 따라 다를 수 있습니다.
/usr/bin/pwd /usr/bin/pwd -P
이식성이 필요한 스크립트에서는 특정 절대 경로가 모든 시스템에 있다고 가정하지 않는 편이 좋습니다.
PWD와 OLDPWD 환경 변수
셸은 현재 위치와 이전 위치를 변수로 관리할 수 있습니다. 변수 이름은 대문자이므로 pwd 명령과 구분해야 합니다.
| 항목 | 의미 |
|---|---|
pwd |
현재 작업 디렉터리를 출력하는 명령입니다. |
PWD |
셸이 기억하는 현재 작업 디렉터리의 논리적 경로입니다. |
OLDPWD |
일반적으로 바로 전에 있던 작업 디렉터리입니다. cd -에서 사용됩니다. |
printf '%s\n' "$PWD" printf '%s\n' "$OLDPWD" pwd -L pwd -P
PWD는 셸 변수이므로 사용자가 임의로 바꾸거나 비정상적인 상태가 되면 실제 위치와 맞지 않을 수 있습니다. 실제 파일 시스템 경로가 중요하면 pwd -P로 확인하세요.
셸 스크립트에서 활용하기
실행 위치 확인하기
스크립트가 특정 디렉터리에서 실행되는 것을 전제로 한다면 작업 전에 위치를 확인할 수 있습니다.
current_dir=$(pwd -P) || exit 1 printf '현재 작업 디렉터리: %s\n' "$current_dir"
명령 치환 결과를 사용할 때는 공백이 있는 경로가 한 단어로 유지되도록 변수를 큰따옴표로 묶습니다.
스크립트 파일 위치와 구분하기
pwd가 출력하는 것은 스크립트가 저장된 디렉터리가 아니라 스크립트를 실행한 프로세스의 현재 작업 디렉터리입니다.
cd /tmp /opt/tools/backup.sh
이 경우 backup.sh 안에서 실행한 pwd는 일반적으로 /tmp를 출력합니다. 스크립트 자신의 위치가 필요하다면 셸 종류, 심볼릭 링크 처리와 호출 방식을 별도로 고려해야 합니다.
pwd와 관련 명령 비교
| 명령 | 용도 |
|---|---|
pwd |
현재 작업 디렉터리의 경로를 출력합니다. |
cd |
현재 셸의 작업 디렉터리를 변경합니다. |
realpath |
지정한 파일명이나 경로를 정규화하여 절대 경로로 출력합니다. |
dirname |
경로 문자열에서 마지막 구성 요소를 제외한 부분을 출력합니다. |
readlink |
심볼릭 링크에 저장된 대상 문자열을 확인합니다. |
자주 발생하는 문제
삭제되거나 접근할 수 없는 현재 디렉터리
현재 위치 또는 상위 디렉터리가 다른 프로세스에 의해 삭제되거나 접근 권한이 바뀌면 pwd가 경로를 결정하지 못하고 오류를 낼 수 있습니다. 접근 가능한 상위 디렉터리로 이동한 뒤 다시 확인하세요.
예상한 경로와 출력이 다름
심볼릭 링크를 통해 이동했다면 pwd -L과 pwd -P의 결과가 다를 수 있습니다. 어느 경로가 틀린 것이 아니라 논리적 이름과 물리적 위치라는 서로 다른 관점을 보여주는 것입니다.
스크립트에서 경로가 달라짐
cron, systemd, CI 작업과 컨테이너는 대화형 터미널과 다른 작업 디렉터리에서 프로그램을 시작할 수 있습니다. 상대 경로를 사용하기 전에 pwd로 실행 환경을 기록하거나, 명확한 절대 경로와 작업 디렉터리 설정을 사용하세요.
FAQ
pwd는 무엇의 약자인가요?
print working directory의 약자이며 현재 작업 디렉터리의 경로를 출력합니다.
pwd와 echo "$PWD"는 같은가요?
정상적인 셸 상태에서는 비슷한 논리적 경로가 나올 수 있지만 동일한 동작은 아닙니다. PWD는 셸 변수이고 pwd는 현재 위치를 출력하는 명령이며, pwd -P는 심볼릭 링크를 해석한 물리적 경로를 구할 수 있습니다.
pwd -L과 pwd -P 중 무엇을 사용해야 하나요?
사용자가 이동한 경로 이름을 유지하려면 -L, 심볼릭 링크를 해석한 실제 파일 시스템 경로가 필요하면 -P를 사용합니다.
pwd는 스크립트가 저장된 위치를 출력하나요?
아닙니다. 스크립트를 실행한 프로세스의 현재 작업 디렉터리를 출력합니다. 스크립트 파일의 위치와 현재 작업 디렉터리는 서로 다를 수 있습니다.









