ディレクトリに入るときにbashスクリプトを実行する

ディレクトリに入るときにbashスクリプトを実行する

ディレクトリに入るときにスクリプトを実行する最良の方法は何ですか?
新しいディレクトリに入るとき、RVMのようにbashにprojectSettings.bashスクリプトを実行させたいと思います。

ベストアンサー1

cd関数(およびpop)を作成pushdしてその特定のディレクトリに入ると、それを検出できます。

cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
unset_all_project_settings () {
  # do whatever it takes to undo the effect of projectSettings.bash,
  # e.g. unset variables, remove PATH elements, etc.
}
chpwd () {
  case $PWD in
    /some/directory|/some/other/directory) . ./projectSettings.bash;;
    *) unset_all_project_settings;;
  esac
}

ホワイトリストに含まれていないディレクトリではこれを実行しないでください。これにより、誰かがあなたをだましてランダムなコードを実行するのを簡単にすることができます。アーカイブが送信されたので、解凍して生成されたディレクトリに変更し、攻撃者のコードを実行します。

このアプローチは、プロジェクトの操作に関係のない何らかの理由でディレクトリに入ってもスクリプトが実行されることを意味するので、お勧めしません。プロジェクトディレクトリを変更して設定スクリプトをインポートするには、特定の機能を使用することをお勧めします。

myproj () {
  cd /some/directory && . ./projectSettings.bash
}

おすすめ記事