중복 가능성:
디렉토리에 들어갈 때 bash 스크립트 실행
저는 매우 특정한 버전의 도구가 필요한 환경을 실행하고 있습니다. 환경을 설정하는 명령은 다음과 같은 스크립트에 있습니다.set_foo_env.sh
디렉토리가 있다고 가정 해 봅시다 ~/repository/foo/
. set_foo_env.sh
디렉토리만 입력해도 실행이 되나요 foo
?
답변1
PROMPT_COMMAND를 사용할 수 있으며 PROMPT_COMMAND에 지정된 코드는 bash 그리기 프롬프트 전에 실행됩니다.
# Call function 'foo'
PROMPT_COMMAND=foo
# The function
foo() {
if [[ $PWD == "$HOME/repository/foo" ]]; then
set_foo_env.sh
fi
}
PROMPT_COMMAND는 bash에만 적용됩니다. bash는 프롬프트를 그릴 때마다 foo 함수를 호출하므로 이는 효율적인 접근 방식이 아닙니다.
답변2
cd
실제 함수를 실행하는 함수 로 변경한 cd
다음 스크립트를 실행하세요.
cd () {
if builtin cd ${1:+"$@"} && [ -r ./set_foo_env.sh ]; then
. ./set_foo_env.sh
fi
}
이는 다음을 가정합니다.
set_foo_env.sh
단일 디렉토리에만 해당 되며set_foo_env.sh
기존 쉘 환경이 변경되어야 합니다 .
경로 기반 전역 파일을 원할 경우 manatwork에서 언급한 질문을 확인하세요(디렉토리에 들어갈 때 bash 스크립트 실행).