bash
agit différemment, que ce soit un shell ou un langage de programmation normal (comme perl
ou python
).
De par sa conception, les paramètres ~/.bash_profile
, ~/.bashrc
etc. sont pour les utilisateurs à des choses ensemble quand bash
joue 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 ssh
sessions (shell de connexion) ou dans des consoles (shell de connexion).
D'autre part, il bash
s'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 bash
programme, il / elle ne voudra pas rechercher ~/.bash_profile
automatiquement le nom de l'utilisateur . C'est un programme normal, pas un shell. Un programme normal (y compris les bash
programmes) 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 cron
in bash
–it, il se trouve simplement qu’il est écrit bash
; en fait, nous pouvons écrire dans python
ou perl
ou tout autre Progamming Langue- alors nous pouvons avoir une option pour les sources bash
d » ~/.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 bash
tant 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_profile
si 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 bash
que quelque chose a 2 rôles: shell et langage de programmation . Alors tout sera beaucoup plus facile à comprendre.
.bashrc
a une ligne qui l'empêche de courir dans des coquilles non interactives.