Où trouver le fichier .bashrc sur Mac OS X Snow Leopard et Lion?

89

Je veux installer rvm sur ma machine Snow Leopard.

Il dit que je dois ajouter une ligne à mon .bashrcfichier (j'utilise bash) mais où est mon .bashrcfichier?

Yuval
la source
1
Vous devriez mettre votre solution dans une réponse et l'accepter (vous devrez attendre un jour ou deux avant que SU ne vous le permette). Ainsi, les personnes qui ont le même problème peuvent consulter la question et voir qu'elle a une réponse.
Nifle
1
Sa solution n'est pas différente de la réponse votée par le haut ..
David Cowden
Pour être sûr, il ne s'agit pas d'un problème de "Linux = .bashrc contre Mac OS =. (Bash_) profile", les fichiers de démarrage du shell fonctionnent de la même manière sous Linux et Mac et le fichier .bashrc est l'endroit le plus approprié pour Session. paramètres spécifiques. vous utilisez, par exemple, tmux ou screen, il se peut que vous n’ayez pas de session de connexion mais que vous souhaitiez quand même avoir vos alias. La raison pour laquelle Mac est différent est que la plupart des distributions Linux livrent des scripts de profil système ou des profils squelettes qui délèguent déjà bashrc (source).
eckes

Réponses:

78

En ce qui concerne le problème .bashrcci-dessus:

Sur la plupart des systèmes, ~/.bashrcn’est utilisé que lors du démarrage d’un shell interactif sans connexion . Cependant, lorsque vous démarrez un nouveau shell, il s’agit souvent d’un shell de connexion interactif . Puisqu'il s'agit d'un shell de connexion , le .bashrcest ignoré. Pour que l’environnement reste cohérent entre les shells de non-connexion et de connexion, vous devez utiliser le source .bashrcde votre .profileou de votre .bash_profile.

Voir le manuel de référence Bash, section 6.2 Fichiers de démarrage Bash.

Appelé en tant que shell de connexion interactif ou avec --login

Lorsque Bash est appelé en tant que shell de connexion interactif ou en tant que shell 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 ~ / .bash_profile, ~ / .bash_login et ~ / .profile, dans cet ordre, puis lit et exécute les commandes à partir de la première qui existe et est lisible.

Appelé en tant que shell interactif sans connexion

Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, Bash lit et exécute les commandes de ~ / .bashrc, si ce fichier existe.

Donc, généralement, votre ~ / .bash_profile contient la ligne

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

après (ou avant) toute initialisation spécifique à la connexion.

Sur mon Mac (Running Leopard), il n'y avait pas de ligne à la source ~/.bashrc. Je devais ajouter cette fonctionnalité moi-même.

Sur certains systèmes et d’autres systèmes d’exploitation, .bashrcprovient du fichier global /etc/profileou /etc/bash_profile, ou est créé à l’aide des fichiers de modèle de /etc/skel.

Pour être honnête, la distinction entre .bashrcet .bash_profilen'est pas bien comprise par la communauté. Lorsque de nombreux développeurs disent "Ajouter ceci à votre fichier .bashrc", ils veulent dire en réalité "Ajouter ceci à votre fichier .bash_profile". Ils veulent que la fonctionnalité soit ajoutée à votre shell de connexion (qui est .bash_profile), pas à votre shell non-login . En réalité, peu importe, placer la configuration .bashrcest acceptable.

Stefan Lasiewski
la source
Ce lien donne un bon aperçu des types de shells et du chargement des fichiers de démarrage - hacktux.com/bash/bashrc/bash_profile
studgeek le
Qu'entend-on par "source" ici?
elgrego
@elgrego, voici une bonne description: Lorsqu'un fichier est créé (en tapant le nom de fichier source ou .fich sur la ligne de commande), les lignes de code du fichier sont exécutées comme si elles avaient été imprimées à la ligne de commande. Voir tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski
60

Il s’avère que sur Mac OS X Snow Leopard et Mac OS X Lion, le fichier chargé est appelé .profile, mais pas .bashrc.

Ce que vous voulez faire est de créer un fichier ~/.profileet de l'appeler .profile (s'il n'existe pas déjà).

Mettez toutes les informations que vous avez besoin de charger avec chaque instance de bash (Merci, thepurplepixel).

Quelques notes de côté:

  1. La période devant le fichier le marque comme invisible pour le Finder et la commande ls par défaut. Pour lister les fichiers invisibles à l’aide de la commande ls de Terminal, utilisez-le -acomme paramètre en tant que tel:ls -a
  2. Le ~symbole signifie /Users/YourUserNameoù YourUserName est le nom abrégé de votre nom d'utilisateur.

Edit: Chris Page remarque (correctement) que tout ce que vous placez dans un fichier .profile s’appliquera à tout shell que vous utilisez (par exemple, zhs, bash, etc.). Si vous souhaitez que le contenu affecte uniquement le shell bash, placez-le dans un .bash_profilefichier plutôt que dans un .profilefichier.

Yuval
la source
5
Nous avons répondu [correctement] à votre question le 1er juin 2010 - un jour après que vous l'ayez posée. Plus d'un an plus tard, vous revenez et donnez exactement la même réponse et acceptez votre propre réponse ...
David Cowden
3
En réalité, sa réponse ajoute plus de détails que la réponse du 1 er juin 2010. Il aborde spécifiquement la question sous Mac OS X, que j’ai trouvée utile.
webworm
3
Notez que si un .bash_profilerépertoire existe déjà dans votre répertoire personnel, le .profilefichier ne sera pas lu!
Phani
J'ai une nouvelle installation de Mac Os El Capitan. Il n'y a pas de fichier de profil . Créez simplement un fichier .profile et cela fonctionne. J'ai personnellement renommé mon .bashrc en .profile.
Nicolas Thery
4

Vous devez faire le vôtre .bashrc. Vous pouvez simplement utiliser un éditeur de texte pour créer un fichier appelé .bashrc(sans extension) avec le contenu souhaité et le sauvegarder dans votre répertoire personnel ( /Users/YourUserName/).

squircle
la source
1
en fait, cela n'a pas fonctionné, mais vous m'avez envoyé dans la bonne direction en me disant de créer mon propre dossier. Le fichier qui a fonctionné sur une configuration Snow Leopard était .profile, pas .bashrc (qui, pour une raison quelconque, n'est pas chargé dans ce système d'exploitation). Je posterai des instructions détaillées dans la question. Merci!
Yuval
@Yuval: Par défaut, a .bashrcfonctionnera, mais uniquement s'il n'y en a pas .profile. Je suppose que ~/.profileexiste par défaut, cependant. Heureux d'avoir pu aider! (Et vous devriez mettre votre solution dans une réponse et l'accepter pour les futurs lecteurs de cette question).
Squircle
Je pense que votre commentaire à propos de seulement s'il n'y a pas de .profile est incorrect. .bashrc fonctionnera dans un shell interactif sans connexion, ou s’il provient de .profile (.bash_profile est probablement un meilleur endroit, car .profile est pour le shell Bourne). .profile est utilisé pendant un shell interactif sans connexion.
Stefan Lasiewski
@ Stefan Cela semble correct, alors. Je ne suis pas un expert :)
squircle
2
Personne n'est ;). Ce genre de choses (.bashrc vs .profile vs .bash_profile vs .bash_login vs shell de connexion interactif vs shell non-login interactif vs shell non-interactif) est source de confusion et il est interrompu par de nombreux scripts Unix et shell.
Stefan Lasiewski
3

Je trouve que dans mon OS 10.6.5, les paramètres bash se trouvent dans "/ etc / bashrc". Je pense que ce sont les spécifications de niveau supérieur pour shell.

Cependant, vous avez besoin d'un compte root pour le modifier. Les spécifications locales par utilisateur "~ / .bashrc" doivent commencer par l'extrait de code suivant, permettant de lire et de charger les paramètres bash au niveau du système:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

J'ajoute normalement des alias dans bashrc au niveau du système afin que tous les utilisateurs puissent également y accéder. À moins qu'ils ne souhaitent pas utiliser vos raccourcis et vos alias.

Bonne chance!

geekborj
la source
2
/ etc / profile (exécuté par les shells de connexion) est un script de démarrage global de bash qui s'applique à tous les utilisateurs et fournit des comportements par défaut pour les shells de connexion. À son tour, il exécute / etc / bashrc, qui contient des personnalisations s’appliquant à la fois aux shells de connexion et autres. De même, les utilisateurs individuels doivent créer un fichier ~ / .bash_profile qui exécute ~ / .bashrc, où la plupart des personnalisations doivent être, et ~ / .bashrc doit exécuter / etc / bashrc pour hériter des comportements par défaut des interpréteurs de commandes non connectés.
Chris Page
1
Pour les utilisateurs individuels, il est préférable d’ajouter ces personnalisations à votre répertoire personnel à ~/.bashrc, pas /etc/bashrc. /etc/bashrcsont les paramètres globaux pour tous les utilisateurs de votre système, ce qui n’est probablement pas ce que vous voulez. En outre, Apple peut venir et changer /etc/bashrcpériodiquement, ce qui risque d’effacer vos personnalisations.
Stefan Lasiewski
1

Utilisez le fichier .profile pour ajouter tout ce que vous ajouteriez à un fichier linux .bashrc.

Par exemple

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 
accélère les images
la source
2
Je vous recommande d'utiliser ~ / .bash_profile (au lieu de ~ / .profile) sauf si vous êtes certain de vouloir que vos personnalisations prennent effet dans d'autres shells et qu'elles soient compatibles.
Chris Page
Pour être sûr, il ne s'agit pas d'un problème de "Linux = .bashrc contre Mac OS =. (Bash_) profile", les fichiers de démarrage du shell fonctionnent de la même manière sous Linux et Mac et le fichier .bashrc est l'endroit le plus approprié pour Session. paramètres spécifiques. vous utilisez, par exemple, tmux ou screen, il se peut que vous n’ayez pas de session de connexion mais que vous souhaitiez quand même avoir vos alias. La raison pour laquelle Mac est différent est que la plupart des distributions Linux livrent des scripts de profil système ou des profils squelettes qui délèguent déjà bashrc (source).
eckes