Je dois autoriser plusieurs applications à être ajoutées à une variable système ($ PYTHONPATH dans ce cas). Je songe à désigner un répertoire dans lequel chaque application peut ajouter un module (par exemple .bash_profile_modulename). J'ai essayé quelque chose comme ça dans ~/.bash_profile:
find /home/mike/ -name ".bash_profile_*" | while read FILE; do
source "$FILE"
done;
mais cela ne semble pas fonctionner.
Ne serait pas
for f in ~/.bash_profile_*; do source $f; done
être suffisant?
Edit : Couche supplémentaire de ls ~/.bash_*
simplifiée pour diriger bash globbing.
Je suis d'accord avec Dennis ci-dessus; votre solution devrait fonctionner (bien que le point-virgule après "done" ne soit pas nécessaire). Cependant, vous pouvez également utiliser une boucle for
for f in /path/to/dir*; do
. $f
done
La substitution de commande de ls n'est pas nécessaire, comme dans la réponse de Dirk. C'est le mécanisme utilisé, par exemple, dans /etc/bash_completion
pour rechercher d'autres scripts d'achèvement de bash dans /etc/bash_completion.d
Oneliner (uniquement pour bash/zsh):
source <(cat *)
aus man bash:
nom de fichier source [arguments]
ein source config/*
Le premier argument sera recherché et tous les autres fichiers de config/seront des arguments du script qu’il génère.
for file in "$(find . -maxdepth 1 -name '*.sh' -print -quit)"; do source $file; done
Cette solution est la plus postable que j'ai jamais trouvée jusqu'à présent:
str="$(find . -type f -name '*.sh' -print)"
arr=( $str )
for f in "${arr[@]}"; do
[[ -f $f ]] && . $f --source-only || echo "$f not found"
done
J'ai testé et je l'utilise. Il suffit de modifier le fichier. après trouver pointer sur votre dossier avec vos scripts et cela fonctionnera.
Vous pouvez utiliser cette fonction pour rechercher tous les fichiers (le cas échéant) d'un répertoire:
source_files_in() {
local dir="$1"
if [[ -d "$dir" && -r "$dir" && -x "$dir" ]]; then
for file in "$dir"/*; do
[[ -f "$file" && -r "$file" ]] && . "$file"
done
fi
}
Les vérifications de fichier supplémentaires gèrent le cas où le motif ne correspond pas car le répertoire est vide (ce qui permet à la variable de boucle de s’étendre à la chaîne de motif elle-même).