zsh에서 경로가 없는 파일에서 도트 명령(소스)이 작동하지 않는 이유는 무엇입니까?

zsh에서 경로가 없는 파일에서 도트 명령(소스)이 작동하지 않는 이유는 무엇입니까?

최근에 bash에서 zsh로 전환했습니다. Bash에서는 .소스 명령에 점 별칭을 사용했습니다 . 예:

. .bashrc

. .bashrc, . ~/.bashrc, 와 함께 작동했습니다 . ./.bashrc.

그러나 zsh에서는 점 별칭이 동일한 방식으로 작동하지 않습니다. 파일 경로에서만 작동합니다. 하지만 경로가 없는 파일을 사용하는 경우에는 그렇지 않습니다.

이것은 작동하지 않습니다:

. .zshrc

그러면 다음과 같은 오류가 발생합니다..: no such file or directory: .zshrc

하지만 이것들은 모두 작동합니다:

source .zshrc
. ./.zshrc
. ~/.zshrc

답변1

실제로는표준적인 행동도트 명령 중:$PATH 검색을 사용합니다.일반적인 상대 경로가 아닌 명령을 실행할 때와 같습니다. 따라서 ~/bin/에 공용 라이브러리를 두고 . libwhatever.sh임의의 디렉토리에서 간단히 로드할 수 있습니다 .

직접 상대 경로 조회를 수행하는 것은 비표준 Bash 확장입니다.

(마찬가지로 점은 .실제로 "쉘 언어" 표준에 나열된 기본 명령이며 source쉘별 별칭입니다. 그 반대는 아닙니다.)

관련 정보