7
votes

Comment configurer Git pour hériter de la variable d'environnement $ de path $?

Mon objectif est d'avoir un ensemble de fichiers DOT partagés entre les nombreux comptes shell que j'ai afin que je puisse avoir un environnement similaire dans chacun. À cause de cela, je ne veux pas d'informations spécifiques à la machine / environnement dans mes fichiers .git ou mes fichiers .bash.

sur ma machine MacOSX, la version EMACS par défaut est 22. J'ai installé une version plus récente de EMACS (24 ) Dans / usr / local / bin . Dans mon fichier .BASHRC, j'ai défini mon éditeur par défaut sur emacs: Editor Editor = EMACS . Avant cela, je configurais également mon chemin de sorte que / usr / local / bin vient avant / usr / bin de sorte que la nouvelle version de EMACS soit sélectionnée.

Lorsque j'utilise git pour créer des messages de validation, il choisit toujours celui dans / usr / bin au lieu de celui de / usr / local / bin . Git ignore mes paramètres path . J'avais l'habitude de coder l'emplacement de la version de Emacs que je voulais dans mon fichier .gitconfigure, mais cela ne fonctionnera pas lorsque j'utilise ce même fichier .gitConfigure sur mon serveur Ubuntu. (Si ce n'est pas clair, ce que je dis, c'est que la modification de mon option d'éditeur de fichier .gitConfigure à pointer vers une codée papier ne fonctionnera pas pour moi).

pourquoi ne respecte pas mon $ Chemin paramètres?

Comment configurer git pour utiliser les eMacs corrects?


Edit: Ajouter plus de contexte

Il existe une suggestion de mettre des variables d'environnement dans .profile / .bash_profile . Voici un code pertinent de mon .bstrucc et mon .bash_profile

.bstrc < / p>

Remarque: j'ai écrit une fonction Bash appelée VERCOMP qui compare les numéros de version. xxx

< fort> .bash_profile xxx


9 commentaires

Invoquez-vous git à partir de terminal.app ou de l'intérieur EMACS (E.G. M-X Shell )?


@lunarnorn, j'invoque git à partir de terminal.app, mais quand je fais m-x shell ne sorte pas de source de fichier mon fichier .bstrucc? Je suppose que je demande pourquoi cela compte où j'invoque git .


Quelle version de git utilisez-vous?


GIT Version 1.7.12.4 (Apple Git-37)


Essayez d'installer un git non-pomme / x-code: Stackoverflow.com/Questtions/13301260/...


:( Je veux utiliser ce que j'ai eu. @Bertf dis-tu que c'est le seul moyen d'obtenir Git pour respecter mes paramètres de $ de chemin?


@Avery Le problème que vous observez est dû à un bogue dans Apple Git. Obtenez git de MacPorts et vous serez défini!


@Avery - Selon l'autre question / réponse, c'est un bogue (sans papiers) dans Apple Git, vous êtes donc bloqué. Vous devrez utiliser un git différent, supprimer / masquer les autres emacs ou définir un éditeur sur un chemin complet.


@Avery, je peux confirmer le bogue Apple Git (1.7.12.4) sur OS X 10.7.5 mentionné dans les commentaires. Cela fonctionne bien avec Git 1.9.1 de Homebrew. De plus, je voudrais pointer vers Stackoverflow. com / questions / 135688 / ... qui contient des informations très utiles sur la définition de variables d'environnement sur des systèmes basés sur OS X.


4 Réponses :


-1
votes

Essayez ceci:

export VISUAL=emacs


3 commentaires

Je suis désolé d'avoir parlé de conditions vagues. En effet, cette tentative de réponse ne répond pas du tout à la question initiale. L'affiche originale voulait savoir pourquoi $ Chemin La variable n'est pas utilisée par son instance de git (exécutée à partir d'EMACS sur OSX dans ce cas) afin que lorsque emacs est appelé De Git, la bonne version de celui-ci (en utilisant path $ ) est choisi.


@ Pavelšimerda, op exports $ Editeur s'attendant à faire la bonne chose. $ Visual est préféré à $ éditeur dans une session graphique.


Votre déclaration ci-dessus (1) n'a aucun rapport avec le problème décrit par l'affiche originale et (2) est faux. Editeur fonctionne bien pour l'affiche originale et pour quelqu'un d'autre lorsque Visual n'est pas défini. La signification visuelle ne change pas dans les environnements graphiques de quelque manière que ce soit.



0
votes

faire pas fort> défini des variables dans .bstrucc code>. Bash ne regarde que ce fichier dans des sessions interactives, de sorte que les programmes en dehors d'une session interactive ne verront jamais de variables de .bstructrc. Code>

pour bash, les variables d'environnement appartiennent à ~ ~ /.profile!.

p>Pourcensez votre problème immédiatement, vous pouvez définir $ Editor code> sur un chemin absolu: P>
if [[ -e /usr/local/bin/emacs ]]; then
  export EMACS=/usr/local/bin/emacs
else
  export EMACS=emacs


2 commentaires

Votre solution m'a fait aller lire homme bash mais je ne suis toujours pas clair ce qui va où. Ça sonne comme .bstrucc est invoqué à partir de choses comme Emacs lors du fait d'un coquille M-X ou simplement de tirer le terminal (puisque je ne me connecte pas non plus). Que devrais-je mettre en Bashrc et que dois-je mettre de profil? Dois-je avoir une source l'autre?


J'ai ajouté source ~ / .bstructrc à mon ~ / .profile mais qui n'a pas changé le comportement ...



1
votes

Je m'attends à avoir une réponse qui explique pourquoi MacOSX ne prend pas mon BASHRC / Profile Environnement change et une solution pour que je puisse obtenir Macosx pour ramasser ces changements.

Ceci n'est pas spécifique à OS X - Voici un exemple: xxx

pour ce que je sais et utilisé pour "vivre" est que les variables d'environnement sont censées résider à l'intérieur / etc / profil (écran du système) et peut être étendu et écrasé sur une base de niveau utilisateur à l'intérieur ~ / .profile respectivement ~ / .bash_profile .

de homme bash < / a>:

Lorsque Bash est invoqué comme une coque de connexion interactive, ou en tant que Shell non interactif avec l'option --Login, il se lit en premier et exécute des commandes à partir du fichier / etc / profil, si ce fichier existe. Après avoir lu ce fichier, il cherche ~ / .bash_profile, ~ / .bash_login, et ~ / .profile, dans cet ordre, et se lit et Exécute des commandes du premier qui existe et est lisible.

D'autre part. .bstrucc est l'endroit où aller là où on place les fonctions personnalisées, les alias, la configuration rapide, etc.

une solution simple à votre question spécifique - en dehors de l'utilisation d'une autre version de git Votre situation spéciale - serait de simplement déplacer vos variables environnementales de votre .bstrucc dans un .bash_profile .

Le projet Linux de Scratch Fournit une jolie Good Exemples sur la manière d'organiser les fichiers de démarrage de coque Bash . Les problèmes spécifiques sur OS X sont abordés à l'intérieur de "Réglage des variables d'environnement dans OS X?" .


3 commentaires

Il est généralement bon d'avoir quelque chose comme [[-f ~ / .bashrc]] &&. ~ / .BASHRC dans ~ / .bash_profile et il est généralement ainsi par défaut dans les distributions. Il n'y a aucun moyen quelque chose dans ./. Bashrc ne s'applique pas à votre environnement.


Votre réponse semble également contredire votre propre commentaire dans la question de la spécificité de la question de Mac OS X.


Dernier point, mais non le moindre, la question n'était pas à propos de la variable $> la variable mais plutôt sur la trajectoire $ variable et l'affiche d'origine .bash_profile avec jumelure Sources Le .CASHRC. .



0
votes

Tout programme est libre de définir le chemin à l'intérieur de tout ce qu'il veut - cette tactique est souvent utilisée dans les programmes SETUID pour éviter l'exécution des exécutables erronés (ou de la carrosserie).

Vous aurez besoin de savoir si EMACS terminal.app crée une bash qui exécute ~ / .bastrc , ~ / .bash_profile , les deux ou autre chose entièrement. (Désolé, je suis un utilisateur VIM.)


0 commentaires