GNU/Linux >> Znalost Linux >  >> Linux

Spouštět Bash skripty při vstupu do adresáře?

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
}

Linux
  1. Použití Bash pro automatizaci

  2. Proč nemohu použít CD ve skriptu Bash?

  3. Bash:Žádný takový soubor nebo adresář?

  1. Použít rozšíření .sh nebo .bash pro skripty Bash?

  2. Jak spustit bash skript?

  3. Spouštění skriptů z jiného adresáře

  1. Použití Linux Sleep Command ve skriptech Bash

  2. Spusťte bash skript z adresy URL

  3. Nemůžete spouštět bash skripty ani jako root?