![CDPATH=".:/some/path"를 사용할 때 하위 디렉터리의 전체 경로가 인쇄되는 것을 방지하는 방법은 무엇입니까?](https://linux55.com/image/137110/CDPATH%3D%22.%3A%2Fsome%2Fpath%22%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EB%95%8C%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%EC%A0%84%EC%B2%B4%20%EA%B2%BD%EB%A1%9C%EA%B0%80%20%EC%9D%B8%EC%87%84%EB%90%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
CDPATH
bash를 사용하여 내가 자주 방문하는 디렉토리에 디렉토리를 심볼릭 링크 하고 싶습니다 . 그러나 다음을 수행하십시오.
CDPATH="~/symlinks"
둘 다 있으면 cd SUBDIR
작업이 중지됩니다. 해당 디렉터리가 현재 작업 디렉터리보다 우선합니다../SUBDIR
~/symlinks/SUBDIR
CDPATH
나는 다음을 사용하여 이 문제를 해결하려고 했습니다.
CDPATH=".:~/symlinks"
이렇게 하면 우선순위 문제가 해결되지만 이제 cd
하위 디렉터리로 이동하면 항상 전체 경로가 인쇄됩니다.
$ pwd
/foo/bar
$ cd baz
/foo/bar/baz
이것은 약간 짜증나는 일입니다. 나도 할 수 있다는 걸 알아다음을 수행하여 모든 cd
출력을 억제합니다.alias cd='> /dev/null cd'
, 그러나 다른 항목의 경로를 인쇄하고 싶습니다 CDPATH
(또는 실행 시 cd -
). 내가 할 수 있는 더 좋은 일이 없을까?
답변1
두 가지 단서:
CDPATH
존재하지 않거나 빈 문자열 인 경우cd SUBDIR
정상적으로 작동하며 추가 오버플로가 인쇄되지 않습니다.Bash 매뉴얼 페이지는 다음과 같이 말합니다.
이 변수는
CDPATH
다음을 포함하는 디렉터리의 검색 경로를 정의합니다dir
.CDPATH
검색에 포함된 각 디렉터리 이름dir
. 의 대체 디렉토리 이름은CDPATH
콜론( )으로 구분됩니다:
. 빈 디렉터리 이름은CDPATH
현재 디렉터리와 동일합니다. 즉, "."
매뉴얼 페이지는 지나치게 단순화된 것 같습니다. 분명히 빈 디렉토리 이름(즉, 빈 문자열)은 다음과 같습니다.아니요.
CDPATH=.
이는 추가 출력을 생성하지만 CDPATH=
추가 출력을 생성하지 않는 것과 정확히 동일합니다. 그러나 빈 디렉터리는 에서 허용되고 CDPATH
빈 디렉터리는 추가 출력을 생성하지 않으므로 다음을 사용할 수 있습니다.
# The first entry is intentionally an empty string.
CDPATH=":~/symlinks"
테스트(bash 4.4.12 사용)에서 예상대로 작동하는 것으로 확인되었습니다. 대신 to cd SUBDIR
로 변경하고 실행합니다../SUBDIR
~/symlinks/SUBDIR
아니요추가 배출물을 인쇄합니다.