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