.bashrc n’a pas été acheté dans iTerm + Mac OS X

62

J'utilise iTerm sous Mac OS X 10.6. Il semble que lorsque j'ouvre iTerm, ni l'un .bashrcni l' autre ne .bash_profilesoient fournis. Je peux le dire car les alias définis dans .bashrcne sont pas définis. Comment réparer?

Computiste
la source
2
Ce qui se passe, c’est ~/.bash_profiled’abord appelé bash, qui court-circuite les instructions que vous avez ~/.bashrc. Ce problème peut se produire de manière inattendue si un programme malveillant ajoute des instructions à votre ~/.bash_profilefichier alors qu'il n'existait pas auparavant et que vous avez placé toutes vos commandes bash ~/.bashrc. La solution consiste à supprimer votre fichier ~ / .bash_profile ou à utiliser le fichier source ~ / .bash_profile dans votre fichier ~ / .bashrc. Ceci peut être effectué en ajoutant la commande: source ~/.bashrcà la fin de votre ~/.bash_profileet en redémarrant le terminal.
Eric Leschinski

Réponses:

53

Bash recherchera SOIT .bash_profile ou .bashrc, en fonction de la manière dont il est appelé. S'il s'agit d'un shell de connexion, Bash recherche ~ / .bash_profile, ~ / .bash_login ou ~ / .profile, dans cet ordre, et source le premier qu'il a trouvé (et uniquement celui-là). S'il ne s'agit pas d'un shell de connexion, mais qu'il est interactif (comme la plupart des sessions de terminal), Bash fournira ~ / .bashrc.

ITerm est probablement à la recherche de ~ / .bashrc. S'il est configuré pour démarrer en tant que shell de connexion, il recherchera ~ / .bash_profile. C'est presque certainement une erreur dans le fichier de configuration plutôt que le fait que le shell ne le recherche pas.

Je mettrais une ligne au début de chaque fichier. Au sommet de ~ / .bash_profile:

export BASH_CONF="bash_profile"

Et au sommet de ~ / .bashrc:

export BASH_CONF="bashrc"

Ensuite, ouvrez un nouveau iTerm et tapez

$ echo $BASH_CONF

Cela devrait confirmer que le fichier est en cours d’acquisition et vous pouvez examiner la syntaxe du fichier.

Brightlancer
la source
2
La définition d'une variable d'environnement différente pour chaque fichier source permet d'obtenir plus d'informations, c'est-à-dire que, si plusieurs fichiers sont d'origine, vous le saurez, et non la dernière (si la commande n'a pas été
obtenue
Cela ne charge toujours pas le fichier .bashrc. Je devais ajouter la source ~ / .bashrc à mes préférences iTerm et Terminal. J'utilise Mac OS X 10.9.5.
Elk géant
Je viens d'ajouter un fichier .profile qui fonctionne automatiquement sous OS X 10.9.5 sans modifier vos préférences de terminal.
Elk géant
1
J'ai découvert que c'est un shell de connexion en allant dans préférences -> profils -> général et shell de connexion est sélectionné sous commande. Valable sur MacOS El Capitan et iTerm2 3.0.14
Aditya
La solution ici ne fonctionne pas pour moi, mais j'ai trouvé une solution. Au début, il n'y avait ni bashrc ni bash_profile. La réponse ici propose de créer un bashrc. Au lieu de créer un fichier bashrc, j'ai créé un fichier bash_profile, et cela a fonctionné. Maintenant, j'ai besoin de comprendre pourquoi la bashrc n'a pas été exécutée et le bash_profile oui.
kalmanIsAGameChanger
68

Dans iTerm2, aucune de ces solutions ne fonctionnait pour moi. J'ai pu l'obtenir pour lire correctement mon fichier .bashrc en ajoutant la commande

source ~/.bashrc 

au champ Envoyer le texte au début: dans Réglages / Général pour mon profil iTerm.

entrez la description de l'image ici

Mark Struzinski
la source
Que s'est-il passé lorsque vous avez fait ce que la réponse acceptée suggère? Pas de sortie?
Daniel Beck
Droite. Je n'ai aucune sortie et iTerm 2 vient de charger le shell bash par défaut sans aucun de mes alias.
Mark Struzinski
Cette réponse a été cassée jusqu'à maintenant - le deuxième extrait était censé entrer ~/.bashrc. Édité il.
Daniel Beck
J'utilise ZSH et avait le même problème. Sauf que mon fichier de configuration n'existait pas et devait être créé. J'ai utilisé cette réponse et défini le paramètre "Envoyer le texte au début". Cependant, lorsque j'ai redémarré ZSH, il a créé le fichier .zsh et écrasé mon fichier. J'ai pu supprimer le "Envoyer le texte au début" et ajouter mes paramètres au fichier nouvellement généré. Je ne sais pas si cela peut aider quelqu'un
Arnolio
Je pensais que c’était mon problème… et puis tout au long du chemin, j’ai réalisé que mon catalogue personnel n’était pas le dossier dans lequel j’avais commencé .. alors, lorsque j’ai déplacé mon .bash_profile vers un autre emplacement, je me suis dit À partir de mon catalogue ~ (maison), j’ajoutais en fait un lien symbolique dans le mauvais dossier, au cas où cela aiderait une autre personne qui
cherchait
23

Je me demande juste utilisez-vous vraiment Bash? Peut-être que vous pouvez utiliser echo $SHELL, il est fort possible que vous utilisiez zsh , avez-vous installé on-my-zh ?

En fait, je rencontre le même problème que vous. Je résous le problème en configurant ~ / .zshrc à la place soit ~ / .bash_profile pour le shell de connexion ou ~ / .bashrc pour le shell sans connexion.

Peut-être que vous pouvez essayer

AaronChen
la source
1
Suggestion intéressante, même si cette question a 3 ans et a une réponse acceptée.
Tyson
12

Sur ma machine 10.6 ~/.profileest source. Donc, une source .bashrcentrée dans ~/.profiledevrait faire le travail.

sebastiangeiger
la source
Travaillé pour moi sur Mac OS El Capitan.
user674669
Mon expérience dit que vous ne voulez pas créer un fichier .bashx d'un autre, ils sont séparés pour une raison :) Si vous faites cela, alors quelque chose ne va pas
Alexander Mills
@AlexanderMills Ces fichiers existent parce que Mac les a extraits directement sous Unix. Il n'y a aucune raison pour qu'ils ne soient pas tous chargés pour un utilisateur.
RaisinBranCrunch
vous pouvez obtenir des appels circulaires s’ils se chargent, c’est le problème. Le meilleur moyen de l’éviter est de retourner un booléen avec une variable d’environnement et de ne charger les autres fichiers que si le booléen n’est pas défini.
Alexander Mills
8

Solution facile.

1. Ouvrez votre ~/.zshrcfichier

2. Ajoutez la ligne suivante à la fin du fichier.

source ~/.bash_profile
Manoj Shrestha
la source
1
Brillant! Cela l'a fait pour moi. Il ne m'est jamais venu à l'esprit que zsh me gênait après avoir installé Oh-my-zh.
Cindy Conway
6

Sur ma machine 10.9, ~ / .bash_profile est recherché. Donc, une entrée source .bashrc dans ~ / .bash_profile devrait faire l'affaire.

Kit Ho
la source
1

Mettez vos définitions d’alias dans le fichier de profil bash, vous devez créer le fichier mais il sera recherché automatiquement. Je crée un fichier séparé appelé alias.configuration et le source dans .bash_profile simplement parce que j'ai un autre utilisateur défini et que je souhaite avoir le même alias.


la source
1
En fait, ni .bashrcni .bash_profilesont originaires.
Computist
1

Ajouter

set -x

au début de /etc/profile. Cela vous donne un compte en ligne par ligne de tout ce qui est exécuté lorsque bashdémarre, y compris les fichiers provenant de l' intérieur /etc/profile, ~/.bash_profileetc. Il est un peu intimidant si vous ne comprenez pas bashtrès bien les scripts, mais vous pouvez être en mesure de voir si il y a une erreur dans un fichier de démarrage et le résultat sera utile à une personne compétente bashpour vous aider à localiser votre problème.

Vous pouvez supprimer la set -xligne lorsque vous avez terminé le dépannage.

chepner
la source
1

Sur 10.10 et iTerm2 2.0, profil personnalisé

  • .bash_rc devrait fonctionner.
  • .bash_profile, essayez "/ bin / bash --login" au lieu de "/ bin / bash"
zmx
la source
J'ai voté pour cette réponse car elle semble être la seule à reconnaître que sous OS X, bash aurait à un moment donné source ".bash_rc" au lieu de ".bashrc". Je ne suis venu ici que parce que j'essayais de savoir pourquoi (et je ne sais toujours pas).
Marnix A. van Ammers
0

Dans iTerm2, assurez-vous que vous utilisez "login shell" au lieu d'une commande personnalisée comprenant "login", qui ne fait pas ce que vous attendez.

George
la source
Que fait réellement la commande iTerm2?
studgeek
0

Effectuez les modifications suivantes et iTerm utilisera bashrc

iTerm> Préférences> Général> [x] Commande: / bin / bash

Jake
la source
0

Le problème peut être résolu en ajoutant la ligne ci-dessous dans / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"

Bob Gu
la source
-1

J'ai combiné plusieurs solutions pour que cela fonctionne comme prévu.

.bash_profile source et exécuté sur zsh.

Preferences -> Profiles -> General .

Sélectionnez Commande sous Commande.
Et ajoutez dans la zone de texte /bin/bash --login.

Puis dans .bash_profile add line /bin/zsh --login

C'est ça.

basilic
la source
(1 Quoi? (2) Si vous avez bashtoujours couru zsh, ce n'est pas ce que tout le monde attend.
Scott
Si je définis / bin / bash --login, il ne fournit aucune fonctionnalité de zsh. Ensuite, si je le change de préférence en loginshell, il ne lit pas .bash_profile. Chaque fois que je dois exécuter source ~/.bash_profilemanuellement. @ Scott Après avoir fait les choses ci-dessus, j'ai zsh de la manière requise.
basilic muhammed
(1) Mon point est que c'est zshpeut-être ce que vous désirez , mais ce n'est pas obligatoire ni demandé par cette question, qui est marquée [bash] et ne dit rien zsh. (2) Si vous définissez des alias et des fonctions de shell et définissez des variables (sans les exporter) dans votre .bashrcet / ou .bash_profile, sont-elles disponibles dans votre zshshell?
Scott