리눅스 팁 · 3 min read · Jan 21, 2026
리눅스 명령줄 탐색 팁/트릭 3 - CDPATH 환경 변수
이 시리즈의 첫 번째 부분에서는 cd - 명령에 대해 자세히 논의했으며, 두 번째 부분에서는 pushd 및 popd 명령과 이들이 유용하게 사용되는 시나리오를 심층적으로 살펴보았습니다.
명령줄 탐색 측면에 대한 논의를 계속하면서, 이번 튜토리얼에서는 이해하기 쉬운 예제를 통해 CDPATH 환경 변수에 대해 논의하겠습니다. 또한 이 변수와 관련된 몇 가지 고급 세부 사항도 논의하겠습니다.
** CDPATH 환경 변수
* 명령줄 작업이 특정 디렉토리 - 예를 들어 홈 디렉토리 - 아래에서 모든 작업을 수행하는 것이라면, 디렉토리를 전환할 때 절대 경로를 제공해야 합니다. 예를 들어, 제가 /home/himanshu/Downloads* 디렉토리에 있다고 가정해 보겠습니다:
$ pwd
/home/himanshu/Downloads그리고 요구 사항은 /home/himanshu/Desktop 디렉토리로 전환하는 것입니다. 이를 위해 일반적으로 다음과 같이 실행해야 합니다:
cd /home/himanshu/Desktop/또는
cd ~/Desktop/또는
cd ../Desktop/다음 명령을 실행할 수 있다면 얼마나 쉬울까요:
cd Desktop네, 가능합니다. 그리고 여기서 CDPATH 환경 변수가 등장합니다. 이 변수를 사용하여 cd 명령의 기본 디렉토리를 정의할 수 있습니다.
값을 출력해 보시면 이 환경 변수가 기본적으로 비어 있음을 알 수 있습니다:
$ echo $CDPATH
$지금까지 논의한 사례를 고려하여, 이 환경 변수를 사용하여 /home/himanshu를 cd 명령의 기본 디렉토리로 정의해 보겠습니다.
가장 쉬운 방법은:
export CDPATH=/home/himanshu이제 저는 이전에 할 수 없었던 일을 할 수 있습니다 - /home/himanshu/Downloads 디렉토리 내에서 cd Desktop 명령을 성공적으로 실행할 수 있습니다.
$ pwd /home/himanshu/Downloads $cd Desktop/ /home/himanshu/Desktop $
이것은 이제 /home/himanshu 아래의 모든 디렉토리로 cd를 수행할 수 있다는 것을 의미합니다. cd 명령에서 /home/himanshu 또는 ~ 또는 ../ (또는 여러 개의 ../)를 명시적으로 지정할 필요가 없습니다.
유의해야 할 점
* 이제 CDPATH 환경 변수를 사용하여 /home/himanshu/Downloads에서 /home/himanshu/Desktop으로 쉽게 전환하는 방법을 알게 되었습니다. 이제 /home/himanshu/Desktop 디렉토리에 Downloads*라는 하위 디렉토리가 포함되어 있고, 그곳으로 전환하려고 한다고 가정해 보겠습니다.
하지만 갑자기 cd Desktop을 실행하면 /home/himanshu/Desktop으로 이동하게 됩니다. 따라서 그렇게 되지 않도록 하려면 다음과 같이 합니다:
cd ./Downloads위의 명령 자체에는 문제가 없지만, 이는 당신의 추가적인 노력(아무리 적더라도)을 요구합니다. 특히 이러한 상황이 발생할 때마다 이 작업을 수행해야 한다는 점을 고려하면 더욱 그렇습니다. 이 문제에 대한 더 우아한 해결책은 CDPATH 변수를 다음과 같이 설정하는 것입니다:
export CDPATH=".:/home/himanshu"이는 cd 명령이 먼저 현재 작업 디렉토리에서 디렉토리를 찾고, 그 다음에 /home/himanshu 디렉토리를 검색하도록 지시하는 것입니다. 물론 cd 명령이 이렇게 작동하도록 할지는 전적으로 당신의 선호나 요구 사항에 달려 있습니다. 이 점을 논의한 이유는 이러한 상황이 발생할 수 있음을 알리기 위함이었습니다.
이제까지 이해했듯이, CDPATH 환경 변수가 설정되면 그 값 - 또는 포함된 경로 집합 -은 cd 명령이 디렉토리를 검색하는 시스템의 유일한 장소입니다(물론 절대 경로를 사용하는 경우는 제외). 따라서 명령의 동작이 일관되게 유지되도록 하는 것은 전적으로 당신에게 달려 있습니다.
계속해서, 상대 경로로 cd 명령을 사용하는 bash 스크립트가 있다면, 예기치 않은 문제에 갇히지 않으려면 먼저 CDPATH 환경 변수를 지우거나 해제하는 것이 좋습니다. 또는 터미널에서 CDPATH를 설정하기 위해 export 명령을 사용하는 대신, .bashrc 파일에서 상호작용/비상호작용 셸을 테스트한 후 환경 변수를 설정하여 변경 사항이 상호작용 셸에서만 반영되도록 할 수 있습니다.
환경 변수의 값에 경로가 나타나는 순서도 중요합니다. 예를 들어, 현재 디렉토리가 /home/himanshu보다 먼저 나열되면 cd 명령은 먼저 현재 작업 디렉토리에서 디렉토리를 검색한 다음 /home/himanshu로 이동합니다. 그러나 값이 “/home/himanshu:.”인 경우 첫 번째 검색은 /home/himanshu에서 이루어지고 그 다음에 현재 디렉토리에서 이루어집니다. 말할 필요도 없이, 이는 cd 명령의 동작에 영향을 미치며 경로의 순서를 인식하지 못하면 문제가 발생할 수 있습니다.
CDPATH 환경 변수는 이름에서 알 수 있듯이 cd 명령에만 작동한다는 점을 항상 염두에 두십시오. 즉, /home/himanshu/Downloads 디렉토리 내에서 cd Desktop 명령을 실행하여 /home/himanshu/Desktop 디렉토리로 전환할 수 있지만, ls를 실행할 수는 없습니다. 다음은 예입니다:
$ pwd
/home/himanshu/Downloads
$ ls Desktop
ls: cannot access Desktop: No such file or directory
$그러나 몇 가지 간단한 우회 방법이 있을 수 있습니다. 예를 들어, 다음과 같이 최소한의 노력으로 원하는 것을 달성할 수 있습니다:
$ cd Desktop/;ls
/home/himanshu/Desktop
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~하지만 모든 상황에 대한 우회 방법이 있을 수는 없습니다.
또 다른 중요한 점: CDPATH 환경 변수가 설정된 상태에서 cd 명령을 사용할 때마다 명령이 전환하는 디렉토리의 전체 경로를 출력한다는 점을 주목했을 것입니다. 말할 필요도 없이, 모든 사용자가 매번 cd 명령을 실행할 때 이 정보를 원하지는 않을 것입니다.
이 출력을 억제하려면 다음 명령을 사용할 수 있습니다:
alias cd='>/dev/null cd'위의 명령은 cd 명령이 성공할 때 출력을 음소거하지만, 명령이 실패할 때는 오류 메시지를 출력하도록 허용합니다.
마지막으로, CDPATH 환경 변수를 설정한 후 셸의 탭 완성 기능을 사용할 수 없는 문제가 발생하는 경우, bash-completion을 설치하고 활성화해 보십시오 - 이에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
결론
CDPATH 환경 변수는 양날의 검입니다 - 주의와 완전한 지식 없이 사용하면 복잡한 함정에 빠질 수 있으며, 이를 해결하는 데 많은 귀중한 시간이 소요될 수 있습니다. 물론, 그렇다고 해서 절대 시도하지 말라는 것은 아닙니다. 사용 가능한 모든 옵션을 평가하고 CDPATH 사용이 큰 도움이 될 것이라고 결론지으면, 주저하지 말고 사용하십시오.
CDPATH를 전문가처럼 사용하고 계신가요? 공유할 추가 팁이 있으신가요? 아래 댓글로 의견을 공유해 주세요.
**
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.