GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter les scripts Bash en entrant dans un répertoire ?

Quelle est la meilleure façon d'exécuter un script en entrant dans un répertoire ?
Lorsque je me déplace dans un nouveau répertoire, j'aimerais que bash exécute le script projectSettings.bash comme le fait RVM.

Réponse acceptée :

Vous pouvez faire cd une fonction (et pop et pushd ), et faites-le détecter si vous entrez dans ce répertoire particulier.

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
}

Ne faites pas cela dans des répertoires que vous n'avez pas mis sur liste blanche, car cela permettrait à quelqu'un de vous inciter à exécuter du code arbitraire très facilement - vous envoyez une archive, vous la décompressez, vous changez dans le répertoire qu'elle a créé, et vous ' J'ai maintenant exécuté le code de l'attaquant.

Je ne recommande pas cette approche, car cela signifie que le script sera exécuté même si vous entrez dans ce répertoire pour une raison sans rapport avec le travail sur le projet. Je suggère d'avoir une fonction spécifique qui modifie le répertoire du projet et source le script de paramètres.

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

Linux
  1. Utilisation de Bash pour l'automatisation

  2. Pourquoi ne puis-je pas utiliser Cd dans un script Bash ? ?

  3. Utilisation de la commande Linux Sleep dans les scripts Bash

  4. Exécuter le script bash à partir de l'URL

  5. Ajouter un script bash au chemin

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

Écrire des commentaires dans des scripts bash

Comment exécuter tous les scripts dans un répertoire sous Linux

Gestion des erreurs dans les scripts Bash

Comment créer des documents avec des scripts Bash