Pour autant que je sache, les shells interactifs peuvent être connectés ou non, et les fichiers de démarrage pour eux sont différents.
- Si le shell de connexion interactif + →
/etc/profile
puis la première lisible~/.bash_profile
,~/.bash_login
et~/.profile
- Si shell interactif + sans connexion →
/etc/bash.bashrc
alors~/.bashrc
Je veux définir certaines variables chaque fois que j'utilise un shell interactif, qu'il s'agisse ou non d'un shell de connexion.
Réponses:
Non, il n'y en a pas. Oui, c'est un défaut de conception.
Utilisez le contenu suivant dans
~/.bash_profile
:Attention, bash a une bizarrerie encore plus étrange: quand il s'agit d'un shell de connexion non interactif et que le processus parent est
rshd
orsshd
, bash sources~/.bashrc
(mais pas~/.bash_profile
ou~/.profile
). Donc, vous voudrez peut-être mettre cela en haut de votre.bashrc
:Voir aussi Différence entre .bashrc et .bash_profile et Différence entre le shell de connexion et le shell sans connexion?
la source
.bashrc
dans un cadre non interactif peut effectivement compter comme inattendu), ni aucune vérification de tout contexte sensible à la sécurité.