Je suis en train de lire des scripts de shell de base depuis la command line Linux et la bible de script shell .
Il indique que le file /etc/profile
définit les variables d'environnement au démarrage du shell Bash. Le directory /etc/profile.d
contient d'autres scripts qui contiennent des files de démarrage spécifiques à l'application, qui sont également exécutés au démarrage par le shell.
Pourquoi ces files ne font-ils pas partie de /etc/profile
s'ils sont également critiques pour le démarrage de Bash?
Si ces files sont des files de démarrage spécifiques à l'application qui ne sont pas essentiels au démarrage de Bash, alors pourquoi font-ils partie du process de démarrage? Pourquoi ne sont-ils pas exécutés uniquement lorsque les applications spécifiques, pour lesquelles ils contiennent des parameters, sont exécutées?
Pourquoi ces files ne font-ils pas partie de / etc / profile s'ils sont également critiques pour le démarrage de Bash?
Si vous voulez dire, "Pourquoi ne sont-ils pas simplement combinés en un seul script géant?", La réponse est:
Si ces files sont des files de démarrage spécifiques à l'application qui ne sont pas essentiels au démarrage de Bash, alors pourquoi font-ils partie du process de démarrage? Pourquoi ne sont-ils pas exécutés uniquement lorsque les applications spécifiques, pour lesquelles ils contiennent des parameters, sont exécutées?
Cela me semble comme une question de philosophie de design plus large que je vais split en deux. La première question concerne la valeur et l'opportunité de l'utilisation de l'environnement shell. A-t-il une valeur positive? Oui, c'est utile. Est-ce la meilleure solution à tous les problèmes de configuration? Non, mais c'est très efficace pour gérer des parameters simples, et aussi largement reconnu et compris. Contrairement à cela, en décidant de configurer de telles choses de manière hétérogène, peut-être que $ PATH pourrait être géré par un outil indépendant, les outils préférés tels que $ EDITOR pourraient être dans un file sqlite quelque part, format personnalisé ailleurs, etc. – n'utilise pas seulement les variables env et /etc/profile.d
semble soudainement plus simple? Vous savez probablement déjà ce qu'est une variable env, comment ils fonctionnent et comment les utiliser, par opposition à l'apprentissage de 5 mécanismes complètement différents pour 5 aspects omniprésents différents de ce qui est appelé de manière appropriée «l'environnement».
La deuxième question est la suivante: «Le démarrage est-il le moment approprié pour cela?», Ce qui soulève l'objection que ce n'est pas très efficace (toutes datatables qui peuvent ou ne peuvent pas être utilisées, etc.). Mais:
gcc
serait less efficace. Gardez à l'esprit que la quantité de memory impliquée est encore infinitésimale. Plus pourrait être ajouté à cette list, mais j'espère que cela vous donne une idée des avantages et des inconvénients de la question – le principal «pro» et le «con» majeur étant qu'il s'agit d'un espace de noms global.
Ces files sont spécifiques à une application, mais sont fournis au démarrage du shell, et non au démarrage de l'application. Un directory de configuration est utilisé ici pour la même raison qu'il se trouve dans de nombreux autres endroits. Cela permet à une application ou un progiciel de modifier les configurations. Cela ne serait pas possible sans une configuration fractionnée, car plusieurs packages essayant de gérer / mettre à jour un seul file de configuration qui peut également être modifié par l'user serait bogué et désordonné.
Aussi une note de côté, /etc/profile
est fournie par tous les shells, pas seulement bash. Le file de configuration spécifique bash est bashrc et provient uniquement des shells interactifs.