Mac OS X .bashrc ne fonctionne pas


78

J'ai un .bashrcfichier d' une ligne dans mon répertoire personnel:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Mais ce n'est pas créer l'alias. Pourquoi cela pourrait-il être?

Réponses:


102

Dans OSX, .bash_profileest utilisé à la place de .bashrc.

Et oui, le .bash_profilefichier doit être situé dans /Users/YourName/
(en d'autres termes, ~/.bash_profile)

Par exemple, /Users/Aaron/.bash_profile


11
Ce n'est pas la bonne réponse. Les alias ne sont pas hérités. Par conséquent, si vous les définissez uniquement dans .bash_profile, ils ne seront pas définis dans des shells autres que ceux de connexion (par exemple, lorsque vous exécutez bash dans bash).
LaC

1
Vous pouvez aussi utiliser bash_aliases, ce qui a le même effet que de mettre les alias dans bashrc, mais plus facile à gérer: ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
dans mon profil .bash, je viens d'écrire une ligne à alias (en quelque sorte) bashrc ->source ~/.bashrc
Eric Hodonsky

87

.[bash_]profileet .bashrcpeut être utilisé sur OS X et Linux. Le premier est chargé lorsque le shell est un shell de connexion; le dernier quand ce n'est pas. La vraie différence est que Linux exécute un shell de connexion lorsque l'utilisateur se connecte à une session graphique, puis, lorsque vous ouvrez une application de terminal, ces shells sont des shells autres que des login. Tandis que OS X n’exécute pas de shell lors de la connexion graphique, et lorsque vous exécutez un shell à partir de Terminal.app, il s’agit d’un shell de connexion.

Si vous souhaitez que vos alias fonctionnent à la fois dans les shells de connexion et non de connexion (comme vous le faites habituellement), vous devez les insérer dans .bashrc et source .bashrc dans votre fichier .bash_profile, avec une ligne comme celle-ci:

[ -r ~/.bashrc ] && source ~/.bashrc

Ceci s’applique à tout système utilisant bash.


15
+1 avec l'avertissement que tout dans .bashrc sera exécuté à nouveau pour les sous-shells (et subsub-, subsubub-, etc.), ce PATH=$PATH:/my/private/binariesqui entraînera par exemple un gonflement de PATH. Voir ceci pour une solution de contournement.
Gordon Davisson

2
Vrai. Comme les variables d'instance exportées sont héritées, je les ai simplement définies au .profilelieu de .bashrc.
LaC

1
@LaC pouvez-vous expliquer _ Comme les variables d'instance exportées sont héritées, je les ai simplement définies dans .profile_…?
Sam

1
@ Sam, je ne sais pas d'où "instance" est venu. Je voulais juste dire "variables exportées". Malheureusement, je ne peux pas éditer ce commentaire.
LaC

2
@dinosaur: "-r" vérifie si le fichier est lisible.
Mhvelplund

7

Ou créez un lien sym appelé .bash_profile pointé sur votre .bashrc

ln -s .bashrc .bash_profile

2

Il n’est pas aliasé car .bash_profileest utilisé à la place de .bashrcMac OS X.

Donc, vous avez deux options:

  • Mettez le pseudonyme dans votre ~/.bash_profile

  • Ou source votre .bashrcde votre .bash_profileen ajoutant cette ligne à la .bash_profile:

    . ~/.bashrc


1

Sur Mac OS X Yosemite , exécutez la commande suivante:

vi ~/.profile

Ajoutez ensuite la ligne suivante:

source ~/.bashrc

Maintenant, enregistrez et fermez .profile, puis ouvrez une nouvelle fenêtre de terminal ou lancez simplement:

source ~/.profile

Voir aussi cette réponse . Cela a fonctionné sur v10.10.3.


C’est un peu plus qu’une répétition des réponses d’il ya quatre ans.
G-Man dit 'Réintégrez Monica'

Bien sûr, juste un facile à lire et à appliquer. Plus une petite contribution - puisque les autres fichiers mentionnés n'étaient pas disponibles sur mon système d'exploitation Yosemite.
Ricardo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.