가능한 중복:
디렉토리에 들어갈 때 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 스크립트 실행).