Jaký je nejlepší způsob, jak spustit skript při vstupu do adresáře?
Když se přesunu do nového adresáře, chtěl bych, aby bash spustil skript projectSettings.bash podobně jako RVM.
Přijatá odpověď:
Můžete vytvořit cd
funkce (a pop
a pushd
) a zjistěte, zda jste vstoupili do tohoto konkrétního adresáře.
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
}
Nedělejte to v adresářích, které jste nepřidali na bílou listinu, protože by to velmi usnadnilo někomu, kdo by vás oklamal, abyste spustili libovolný kód – pošlete vám archiv, rozbalíte jej, přejdete do adresáře, který vytvořil, a vy' Nyní jsem spustil kód útočníka.
Tento přístup nedoporučuji, protože to znamená, že skript bude spuštěn, i když do tohoto adresáře vstoupíte z nějakého důvodu, který nesouvisí s prací na projektu. Navrhuji mít specifickou funkci, která změní adresář projektu a bude zdrojem skriptu nastavení.
myproj () {
cd /some/directory && . ./projectSettings.bash
}