ディレクトリに入るときにスクリプトを実行する最良の方法は何ですか?
新しいディレクトリに移動するとき、RVMと同じようにbashでprojectSettings.bashスクリプトを実行したいと思います。
承認された回答:
cd
を作成できます 関数(およびpop
およびpushd
)、その特定のディレクトリに入ったかどうかを検出させます。
cd () { builtin cd "[email protected]" && chpwd; }
pushd () { builtin pushd "[email protected]" && chpwd; }
popd () { builtin popd "[email protected]" && 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
}