디렉토리를 변경할 때 자동으로 스크립트를 실행합니다.

디렉토리를 변경할 때 자동으로 스크립트를 실행합니다.

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

관련 정보