ディレクトリを変更すると自動的にスクリプトが実行されます。

ディレクトリを変更すると自動的にスクリプトが実行されます。

重複の可能性:
ディレクトリに入るときに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スクリプトを実行する)。

関連情報