2 votes

L'emplacement du fichier .emacs peut-il être spécifié par une variable d'environnement ?

Je travaille dans un environnement où nous nous connectons tous en tant que nous-mêmes, puis sudo à un utilisateur commun. (Bleah). Je commence à utiliser emacs et j'aimerais spécifier mon propre fichier .emacs au lancement. Je pense que ce que je veux, c'est spécifier l'emplacement de .emacs avec une variable d'environnement, mais je ne vois aucun moyen de le faire dans la documentation d'emacs. En existe-t-il un ?

Comme alternative, peut-être dois-je apprendre elisp et charger conditionnellement mon propre fichier à partir du fichier .emacs commun situé dans /home/common_user/.emacs ? Dans mon cas, j'ai déjà une variable d'environnement SUDO_USER définie sur mon nom 'lcuff', et une variable d'environnement MY_CONF définie sur /foo/bar/blah/lcuff, dans laquelle je voudrais stocker mon propre fichier .emacs. Comment dois-je faire ?

Vos réflexions et conseils sont les bienvenus.

3voto

phils Points 30543

Voir :
C-hig (emacs) Find Init RET

A défaut d'autre chose, vous pouvez spécifier $HOME pour une commande avec env :

env HOME=/foo/bar/blah/lcuff emacs

2voto

R. P. Dillon Points 2088

Invoquer emacs avec l'option -u cherchera le fichier init pour l'utilisateur donné, donc

emacs -u Leonard

lancera emacs avec votre fichier d'initialisation emacs, même si vous êtes connecté sous un autre utilisateur.

2voto

devnull Points 45016

Vous pouvez dire à emacs de charger le fichier init de votre choix en disant :

emacs -q -l /path/to/my/preferred/.emacs

1voto

tony day Points 169

C'est un peu difficile de savoir qui emacs pense que vous êtes. De l'info :

Plus précisément, Emacs détermine d'abord quel fichier init de l'utilisateur utiliser. Il obtient votre nom d'utilisateur à partir des variables d'environnement LOGNAME et USER ; si aucune d'entre elles n'existe, il utilise le nom d'utilisateur effectif. Si ce Si ce nom d'utilisateur correspond au nom d'utilisateur réel, alors Emacs utilise `HOME' ; sinon, sinon, il recherche le répertoire personnel correspondant à ce nom d'utilisateur dans la base de données dans la base de données des utilisateurs du système.

Je commencerais donc par découvrir qui emacs pense que vous êtes, en lançant emacs sans charger aucun fichier init :

emacs -q

et ensuite trouver où emacs pense que votre fichier init se trouve :

(locate-user-emacs-file "yourrealusername")

Je pense que sur un nouvel environnement, il sera par défaut à ~/.emacs.d/votre nom d'utilisateur, mais cela devrait vous aider à décider où placer au mieux le le fichier init.

Un point important est que c'est plutôt une bonne pratique d'avoir un emacs utilisateur répertoire plutôt qu'un simple fichier de démarrage. Il y a un tas de trucs supplémentaires dont emacs doit garder la trace (gestion des paquets, paramètres personnalisés, fichiers de sauvegarde, dictionnaire, code lisp inséré manuellement, etc etc) et je trouve extrêmement utile de mettre tout cela à un seul endroit. tout cela en un seul endroit. Emacs cherche dans ~/.emacs.d/init.el s'il ne voit pas ~/.emacs ou ~/.emacs. ne voit pas ~/.emacs ou ~/.emacs.el sur le système. Assurez-vous que vous n'avez pas ~/.emacs encore.

Créez un nouveau fichier appelé ~/.emacs.d/init.el

Mets ça dedans :

(setq user-emacs-directory "~/.emacs.d/")
(message "This is my init.el file and noone elses!!!")
(inhibit-default-init) ;; there might be a default.el lurking somewhere

Si emacs a bien saisi votre nom d'utilisateur et votre adresse, vous pouvez alors redémarrer avec :

emacs -u therealme

ou, si cela perturbe les variables d'environnement

env HOME=/this/is/my/home USER=blah emacs

Il pourrait y avoir un site-start.el quelque part qui pourrait être chargé avant votre init.el. Si vous suspectez cela, charger emacs avec l'option --no-site-file le fera disparaître.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X