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?

William Jockusch
la source

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

Azz
la source
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.

Lac
la source
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
Barrett
la source
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

Wuffers
la source
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.

Ricardo
la source
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