디렉터리로 전환할 때 자동으로 스크립트 실행

디렉터리로 전환할 때 자동으로 스크립트 실행

가능한 중복:
디렉토리에 들어갈 때 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
}

이는 다음을 가정합니다.

  1. 이는 set_foo_env.sh단일 디렉토리에만 해당되며
  2. set_foo_env.sh기존 쉘의 환경이 변경되어야 합니다 .

전역 파일을 사용하여 경로 기반을 원하는 경우 manatwork가 언급한 질문을 살펴보십시오(디렉토리에 들어갈 때 bash 스크립트 실행).

관련 정보