bashagit différemment, que ce soit un shell ou un langage de programmation normal (comme perlou python).
De par sa conception, les paramètres ~/.bash_profile, ~/.bashrcetc. sont pour les utilisateurs à des choses ensemble quand bashjoue le rôle d'un shell (shell de connexion, shell interractive). Pensez à l'environnement que vous avez dans un xterm(shell interactif) ou dans des sshsessions (shell de connexion) ou dans des consoles (shell de connexion).
D'autre part, il bashs'agit également d'un puissant langage de programmation ( pensez à de nombreux scripts pour la gestion de services dans systemd) qui nécessite un style de travail différent. Par exemple, lorsqu'un développeur est en train d'écrire un script système ou un bashprogramme, il / elle ne voudra pas rechercher ~/.bash_profileautomatiquement le nom de l'utilisateur . C'est un programme normal, pas un shell. Un programme normal (y compris les bashprogrammes) hériterait naturellement des paramètres de l'environnement de travail actuel (shell), mais ne les définirait pas.
Si nous écrivons un programme pour cronin bash–it, il se trouve simplement qu’il est écrit bash; en fait, nous pouvons écrire dans pythonou perlou tout autre Progamming Langue- alors nous pouvons avoir une option pour les sources bashd » ~/.bash_profile(lire: réglage du shell de l' utilisateur, qui se trouve être la même langue de votre langage de programmation):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
Cependant, que se passe-t-il si cet utilisateur ne l’utilise pas en bashtant que shell? Il / elle peut utiliser zsh, ksh, fish, etc. Ainsi, cette pratique ne fonctionnerait pas vraiment lorsque le programme d' écriture pour un usage public.
Donc, vous pouvez rechercher ~/.bash_profilesi cela vous convient. Mais ici, il ne s'agit pas de savoir si nous sommes en mesure de créer un fichier, mais de savoir comment les choses devraient fonctionner dans le système: le concept de conception . En bref: nous devrions considérer bashque quelque chose a 2 rôles: shell et langage de programmation . Alors tout sera beaucoup plus facile à comprendre.
.bashrca une ligne qui l'empêche de courir dans des coquilles non interactives.