웹사이트 검색

Linux 명령줄 탐색 팁/요령 3 - CDPATH 환경 변수


이 페이지에서

  1. CDPATH 환경 변수\n
  2. 유의사항\n
  3. 결론

이 시리즈의 첫 번째 부분에서는 cd - 명령에 대해 자세히 설명했고 두 번째 부분에서는 pushd 및 popd 명령과 이들이 유용한 시나리오에 대해 자세히 살펴보았습니다.

명령줄 탐색 acontainer.style.width=100%;var ins=document.createElement(ins);ins.id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid에 대한 논의를 계속합니다. ;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset.fullWidthResponsive=true;}

CDPATH 환경 변수

명령줄 작업이 특정 디렉터리(예: 홈 디렉터리)에서 모든 작업을 수행하는 경우에도 디렉터리를 전환하는 동안 절대 경로를 제공해야 합니다. 예를 들어 내가 /home/himanshu/Downloads 디렉토리에 있는 상황을 생각해 보십시오.

$ pwd
/home/himanshu/Downloads

요구 사항은 /home/himanshu/Desktop 디렉토리로 전환하는 것입니다. 이렇게 하려면 일반적으로 다음 중 하나를 실행해야 합니다.

cd /home/himanshu/Desktop/

또는

cd ~/Desktop/

또는

cd ../Desktop/

다음 명령을 실행할 수만 있다면 쉽지 않을까요?

cd Desktop

예, 가능합니다. 그리고 이것은 CDPATH 환경 변수가 들어오는 곳입니다. 이 변수를 사용하여 cd 명령의 기본 디렉토리를 정의할 수 있습니다.

해당 값을 인쇄하려고 하면 이 env 변수가 기본적으로 비어 있음을 알 수 있습니다.

$ 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 또는 ~ 또는 을 명시적으로 지정하지 않고도 /home/himanshu 아래의 모든 디렉토리에 대해 cd를 수행할 수 있습니다. >../ (또는 여러 ../) cd 명령에서

명심해야 할 점

이제 CDPATH 환경 변수를 사용하여 /home/himanshu/Downloads/home/himanshu/Desktop< 간에 쉽게 전환하는 방법을 알게 되었습니다. /엠>. 이제 /home/himanshu/Desktop 디렉토리에 Downloads라는 하위 디렉토리가 포함되어 있고 전환하려는 하위 디렉토리가 있다고 가정해 보겠습니다.

그러나 갑자기 cd 데스크톱을 실행하면 /home/himanshu/Desktop으로 이동한다는 사실을 깨닫게 됩니다. 따라서 이러한 일이 발생하지 않도록 하려면 다음을 수행합니다.

cd ./Downloads

앞서 언급한 명령어 자체에는 문제가 없지만, 특히 이러한 상황이 발생할 때마다 이 작업을 수행해야 한다는 점을 고려하면 사용자가 추가로 노력해야 합니다(아무리 적더라도). 이 문제에 대한 보다 우아한 해결책은 원래 CDPATH 변수를 다음과 같은 방식으로 설정하는 것입니다.

export CDPATH=".:/home/himanshu"

이는 cd 명령에 현재 작업 디렉토리에서 먼저 디렉토리를 찾은 다음 /home/himanshu 디렉토리 검색을 시도하라는 의미입니다. 물론 cd 명령이 이러한 방식으로 작동하도록 할지 여부는 전적으로 사용자의 기본 설정이나 요구사항에 달려 있습니다. 이 점에 대해 논의한 이유는 이러한 상황이 발생할 수 있음을 알리기 위한 것이었습니다.

지금쯤 이해하셨겠지만 일단 CDPATH env 변수가 설정되면 해당 값(또는 포함된 경로 집합)은 시스템에서 cd 명령이 디렉토리를 검색하는 유일한 위치입니다(물론 다음과 같은 경우는 제외). 절대 경로를 사용합니다). 따라서 명령의 동작이 일관되게 유지되는지 확인하는 것은 전적으로 사용자에게 달려 있습니다.

계속해서 상대 경로와 함께 cd 명령을 사용하는 bash 스크립트가 있는 경우 예기치 않은 문제에 갇히지 않는 한 먼저 CDPATH 환경 변수를 지우거나 설정을 해제하는 것이 좋습니다. 또는 터미널에서 export 명령을 사용하여 CDPATH를 설정하는 대신 대화형/비대화형 셸을 테스트한 후 .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를 사용하고 계십니까? 공유할 팁이 더 있습니까? 아래 의견에 의견을 보내주십시오.

<엠>


판권 소유. © Linux-Console.net • 2019-2024