Possibilité de dupliquer: Quelle est la différence entre .bashrc, .bash_profile et .environment?
Il semble que si j'utilise
alias ls='ls -F'
dans .bashrc sous Mac OS X, le shell nouvellement créé n'aura pas cet alias. Je dois taper bash
encore et cet alias sera en vigueur.
Et si je me connecte à Linux sur la société d'hébergement, le .bashrc
Le fichier a une ligne de commentaire qui dit:
Pour Shell non connecté
et le .bash_profile
le fichier a un commentaire qui dit
pour la connexion Shell
Alors, où les alias devraient-ils être écrits? Pourquoi séparons-nous le shell de connexion et le shell non-login?
Certaines pages Web utilisent .bash_aliases
, mais cela ne fonctionne pas sous Mac OS X, semble-t-il.
La raison pour laquelle vous séparez le shell login et non-login est parce que le fichier .bashrc
Est rechargé à chaque fois que vous démarrez une nouvelle copie de Bash. Le fichier .profile
Est chargé uniquement lorsque vous vous connectez ou utilisez l'indicateur approprié pour indiquer à Bash de jouer le rôle d'un shell de connexion.
Personnellement,
PATH
dans un fichier .profile
(Car j’utilise parfois d’autres shells);.bashrc
;Je mets ça
#!/bin/bash
#
# CRM .bash_profile Time-stamp: "2008-12-07 19:42"
#
# echo "Loading ${HOME}/.bash_profile"
source ~/.profile # get my PATH setup
source ~/.bashrc # get my Bash aliases
dans mon fichier .bash_profile
.
Oh, et la raison pour laquelle vous devez taper bash
à nouveau pour obtenir le nouvel alias est que Bash charge votre fichier .bashrc
Au démarrage mais qu'il ne le recharge pas à moins que vous ne le lui indiquiez. Vous pouvez recharger le fichier .bashrc
(Sans avoir besoin d’un second shell) en tapant
source ~/.bashrc
qui charge le fichier .bashrc
comme si vous aviez tapé les commandes directement dans Bash.
Départ http://mywiki.wooledge.org/DotFiles pour une excellente ressource sur le sujet en dehors de man bash
.
Sommaire:
~/.bash_profile
Ou ~/.profile
Est lu et exécuté. Comme tout ce que vous exécutez à partir de votre shell de connexion hérite de son environnement, vous devez y placer toutes vos variables d'environnement . Comme LESS
, PATH
, MANPATH
, LC_*
, ... Pour un exemple, voir: Mon .profile
~/.bashrc
, Pas /.profile
Ou ~/.bash_profile
, Pour cette raison exacte, donc définissez là tout ce qui ne s'applique bash . Ce sont des fonctions, des alias, des variables uniquement bash comme HISTSIZE (ce n'est pas une variable d'environnement, ne l'exportez pas!) , les options du shell avec set
et shopt
, etc. Pour un exemple, voir: Mon .bashrc
~/.bashrc
Mais seulement ~/.profile
Ou ~/.bash_profile
, Vous devez donc le rechercher manuellement à partir de ce dernier. Vous me verrez faire cela dans mon ~/.profile
Aussi: source ~/.bashrc
.De la page de manuel bash:
Lorsque bash est appelé en tant que shell de connexion interactif ou non interactif avec l'option
--login
, Il lit et exécute d'abord les commandes du fichier/etc/profile
, Si ce fichier existe. Après avoir lu ce fichier, il recherche dans cet ordre~/.bash_profile
,~/.bash_login
Et~/.profile
, Puis lit et exécute les commandes à partir de la première qui existe et est lisible. L'option--noprofile
Peut être utilisée au démarrage de l'environnement Shell pour empêcher ce comportement.Lorsqu'un shell de connexion se ferme, bash lit et exécute les commandes du fichier
~/.bash_logout
, S'il existe.Lorsqu'un shell interactif qui n'est pas un login se lance, bash lit et exécute les commandes de
~/.bashrc
, Si ce fichier existe. Cela peut être inhibé en utilisant l'option--norc
. L'option de fichier--rcfile
Forcera bash à lire et à exécuter des commandes à partir du fichier au lieu de~/.bashrc
.
Ainsi, si vous souhaitez obtenir le même comportement pour les shells de connexion et les shells interactifs autres que de login, vous devez placer toutes vos commandes dans .bashrc
Ou .bash_profile
, Puis disposer de l'autre fichier. source le premier.
.bash_profile
est chargé pour un "shell de connexion". Je ne suis pas sûr de ce que cela serait sous OS X, mais sous Linux, il s’agit de X11 ou d’un terminal virtuel.
.bashrc
est chargé à chaque fois que vous exécutez Bash. C’est là que vous devez placer les éléments que vous souhaitez charger chaque fois que vous ouvrez une nouvelle fenêtre Terminal.app.
Personnellement, j'ai tout mis dans .bashrc
afin que je n'ai pas à redémarrer l'application pour que les modifications prennent effet.