web-dev-qa-db-fra.com

Quelle est la différence entre .profile et .bash_profile, et quand les configurez-vous? (Mac)

doublon possible:
Différence entre .bashrc et .bash_profile

Quelle est la différence entre .profile et .bash_profile et quand configurez-vous lequel?

Ie si je configure le .bash_profile, dois-je quand même configurer .profile?

23
Imran

En supposant que bash est votre shell par défaut, les différences sont décrites dans la page de manuel bash (man bash):

   When bash is invoked as an interactive login Shell, or as  a  non-interac-
   tive  Shell  with the --login option, it first reads and executes commands
   from the file /etc/profile, if that file exists.  After reading that file,
   it  looks  for  ~/.bash_profile,  ~/.bash_login,  and  ~/.profile, in that
   order, and reads and executes commands from the first one that exists  and
   is readable.  The --noprofile option may be used when the Shell is started
   to inhibit this behavior.

Il y a plus de détails dans la page de manuel qui couvre le mode de compatibilité POSIX-Shell, d'où provient .profile. Lisez toute la section de la page de manuel pour tous les détails.

11
Ned Deily

Si vous configurez .bash_profile, vous n'aurez également pas besoin de configurer .profile.

J'aime conserver mes propres alias et commandes dans .profile. Ainsi, si je gâche quelque chose, je sais que je peux toujours supprimer le .profile sans affecter le système en général ni les autres applications qui modifient .bash_profile (comme MacPorts).

Pour utiliser un .profile, vous devrez peut-être inclure la ligne source ~/.profile dans votre .bash_profile afin que le fichier .profile soit lu (voir la réponse de Ned Deily).

5
speedofmac

.profile est exécuté par bash lorsque vous obtenez un processus Shell normal - par exemple. vous ouvrez un outil terminal. .bash_profile est exécuté par bash pour les shells de connexion - c’est donc le cas lorsque vous telnet/ssh dans votre machine à distance, par exemple. Par exemple, si vous utilisez ssh à distance dans une machine (disons que vous ouvrez un terminal X), vous obtiendrez initialement .bash_profile. Si dans ce XTerminal vous tapez "xterm" et créez un autre terminal X, alors .profile sera exécuté pour la deuxième instance de XTerminal. Les fichiers résident dans votre répertoire personnel (~). Si je ne me trompe pas par défaut, ils exécutent tous deux ~/.bashrc pour que vous puissiez le modifier afin de configurer les paramètres/variables communs pour les shells de connexion et non de connexion (par exemple, en définissant PATH, certains alias/raccourcis, etc.). Vous voudrez peut-être parfois configurer certaines choses différemment pour ces 2 mais je n’ai jamais rencontré ce besoin - cependant, la possibilité existe.

2
Liv

pour une configuration simple et rapide (où vous ne voulez pas compliquer les choses), configurez simplement tout dans votre fichier ~/.profile. Ce n'est que lorsque vous rencontrez des problèmes (mais que vous ne le rencontrerez probablement jamais) que vous en apprendrez davantage sur .bash_login ou .bash_profile;)

Je suis aussi sur OS X, et n'ai jamais eu besoin de .bash_profile ou .bash_login et n'utilise que .profile, mais votre kilométrage peut varier ...

1
jm666