Quelle est la différence entre .profile et .bash_profile et pourquoi n'ai-je pas de fichier .profile sur mon système?

12

Je suis donc assez nouveau sur Linux et j'ai récemment installé Fedora 19 sur mon netbook. Je veux avoir une compréhension plus approfondie de Linux et de la CLI, donc je lis maintenant Learn Linux: The Hard Way .

Dans l'exercice 3, l'auteur donne les commandes suivantes:

  • ls -al
  • profil de chat

J'essaie de suivre ces instructions mais en vain. Il n'y a pas de fichier .profile dans mon répertoire de nom d'utilisateur comme je peux le voir sur ls -al. D'après ce que j'ai appris, les fichiers .bash_profile et .profile sont pratiquement les mêmes. La seule différence que j'ai conclue de mes recherches est que .bash_profile est vérifié en premier.

Ce que je ne comprends pas, c'est pourquoi y a-t-il plusieurs fichiers pour la même fonction sous Linux, pourquoi l'auteur utilise-t-il .profile et non .bash_profile (si je comprends bien. et comment se fait-il que je n'ai pas le fichier .profile sur mon système?

Emiroe
la source
Voir aussi unix.stackexchange.com/questions/45684/… qui répond en partie à votre question. De plus, unix.stackexchange.com/questions/67940/… montre l'une des raisons pour lesquelles ces différents fichiers peuvent prêter à confusion pour des choses plus avancées que vous n'en avez probablement encore.
msw

Réponses:

13

Les .profiledates remontent à la coquille Bourne originale connue sous le nom de sh. Étant donné que le shell GNU bashest (selon ses options) un sur-ensemble du shell Bourne, les deux shells peuvent utiliser le même fichier de démarrage. Autrement dit, à condition que seules les shcommandes soient insérées dans.profile

Par exemple, aliasest une commande intégrée valide de bashmais inconnue de sh. Par conséquent, si vous n'aviez qu'un .profiledans votre répertoire personnel et y mettiez une aliasdéclaration, vous vous shplaindriez. Il existe donc un fichier spécifique à bash qui a des commandes d'initialisation du shell que bash lira si et seulement s'il n'y a pas de .profilefichier présent.

En fait, c'est un peu une simplification excessive dans certaines installations, et je ne connais pas Fedora. Sous bash, /etc/profileest lu par le shell avant tous les fichiers de votre répertoire personnel. S'il existe un script d'initialisation à l'échelle du système, il dit souvent quelque chose comme

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

Pourquoi est-ce ainsi? Une tentative de compatibilité à travers des décennies de dialectes shell. Pourquoi le didacticiel est-il rédigé de cette façon? Le shell Bourne n'est plus souvent utilisé et certaines personnes ne savent même pas qu'il existe un autre shell de type Bourne que bash. Même lorsque la syntaxe Bourne (limitée) est utilisée pour une meilleure compatibilité multiplateforme, elle est souvent exécutée par dashou bash en mode de compatibilité POSIX. En effet, la source réelle du shell Bourne est probablement un composant protégé par des droits d'auteur d'Unix System V qui semble être la propriété de Novell maintenant, mais je n'ai aucune idée de ce qu'ils en font, le cas échéant.

Pour l'utilisateur débutant, utilisez soit $HOME/.profileou $HOME/.bash_profilemais pas les deux et tout ira bien. Puisque vous avez déjà un .bash_profiletravail avec cela, car il peut contenir des éléments spécifiques au système dont votre installation a besoin.

msw
la source
Merci! Je pense que je le comprends un peu mieux maintenant, encore beaucoup à apprendre, je suppose.
Emiroe
Il s'agit en grande partie de détritus historiques que vous n'avez vraiment pas besoin de connaître; concentrez-vous sur le dernier paragraphe de ma réponse. De plus, puisque vous êtes nouveau ici, vous pouvez voter et accepter une réponse qui est la plus haute forme de remerciements ici.
msw
Oui, j'ai déjà accepté votre réponse. Je ne m'attendais pas à ce que quelqu'un y mette autant d'efforts, donc je suis très reconnaissant. J'ai accepté votre réponse mais je ne peux pas la voter car elle nécessite 15 points de réputation et je n'en ai que 8. Alors désolé pour ça!
Emiroe
J'ai oublié la limite de 15 répétitions; tu as raison.
msw
4
Bonus historique n ° 1 : le véritable obus Bourne s'est finalement échappé de la captivité. minnie.tuhs.org a le code source complet de V7 (la première version unix avec le shell Bourne), et heirloom.sourceforge.net a une version légèrement plus récente du shell Bourne qui est toujours réellement utilisable. Bonus historique n ° 2 : aliasest requis par POSIX donc il n'y en a pas beaucoup shautour qui ne le savent pas.