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는 스크립트가 저장된 위치를 출력하나요?

아닙니다. 스크립트를 실행한 프로세스의 현재 작업 디렉터리를 출력합니다. 스크립트 파일의 위치와 현재 작업 디렉터리는 서로 다를 수 있습니다.

관련 글과 공식 문서

같은 카테고리의 다른 글
Linux / 명령어 / man - 명령어 매뉴얼 확인

Linux / 명령어 / man - 명령어 매뉴얼 확인

man 명령어로 리눅스 매뉴얼을 읽고 검색하는 방법을 설명합니다. 매뉴얼 섹션, 화면 이동, 키워드 검색, 셸 내장 명령 확인과 문서가 없을 때의 해결 방법을 함께 정리합니다.

Linux 강좌 / 배포판 선택하기

Linux 강좌 / 배포판 선택하기

리눅스 입문과 서버 실습에 Ubuntu와 Rocky Linux 중 무엇을 선택하면 좋을까요? 학습 목표, 패키지 관리 방식과 지원 정책을 기준으로 두 배포판을 비교합니다.

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux resolvectl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux screen 명령어로 원격 터미널 세션을 분리하고 다시 연결하는 방법을 설명합니다. 세션·창 관리, 로그 기록, 문제 해결과 nohup·tmux·systemd의 차이를 정리합니다.

Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux / 명령어 / lsmod - 로드된 커널 모듈 확인

Linux lsmod 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux tail 명령어로 파일의 마지막 행과 바이트를 확인하고 새로 추가되는 로그를 추적하는 방법을 설명합니다. -n, -f, -F 차이와 로그 로테이션, 필터링 및 여러 파일 모니터링 예제를 정리합니다.

Linux / 명령어 / tac - 파일을 마지막 줄부터 역순 출력

Linux / 명령어 / tac - 파일을 마지막 줄부터 역순 출력

Linux tac 명령어로 파일의 줄 순서를 뒤집어 마지막 줄부터 출력하는 방법을 설명합니다. 여러 파일 처리, 구분자 변경과 로그 확인 예제를 함께 정리합니다.

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux rpm 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / stat - 파일 정보와 메타데이터 확인

Linux / 명령어 / stat - 파일 정보와 메타데이터 확인

Linux stat 명령어로 파일 크기, 권한, 소유자, inode와 타임스탬프를 확인하는 방법을 설명합니다. atime·mtime·ctime·Birth의 차이와 출력 형식, 파일 시스템 조회법도 정리합니다.

Linux / 명령어 / which - PATH에서 실행 파일 경로 찾기

Linux / 명령어 / which - PATH에서 실행 파일 경로 찾기

Linux which 명령어로 PATH에서 실행 파일 경로를 찾는 방법을 설명합니다. type과 command -v의 차이, 별칭·함수 확인과 스크립트 이식성도 정리합니다.