4 votes

Emacs ne charge pas le fichier init lorsqu'il est exécuté en tant que sudo

Emacs charge mon .emacs.d/init.el n'a pas de problème lorsqu'il est exécuté en tant qu'utilisateur normal, mais refuse de le charger lorsqu'il est exécuté en tant que sudo emacs file.type . J'ai essayé de changer le propriétaire de .emacs.d a root sans succès.

7voto

Oliver Joseph Ash Points 113

Je suis un peu hors sujet, mais vous pourriez utiliser Emacs en tant qu'utilisateur normal, et tramp pour ouvrir le fichier en tant que root :

C-xC-f /sudo::/path/to/file

vous demandera votre mot de passe sudo, et ouvrira le fichier en tant que root.

3voto

Roadkill Points 56

Lorsque vous vous exécutez en tant que sudo ajouter -s pour préserver votre environnement. Ce n'est pas préserver votre environnement, donc votre HOME est perdue. Emacs cherche dans ~/.emacs, ~/.emacs.el, or ~/.emacs.d/init.el donc si vous perdez HOME, vous perdez le chemin d'accès à vos fichiers de démarrage.

2voto

Sudo -s n'a pas fonctionné pour moi. Voici la solution de contournement que j'ai utilisée.

Chargez emacs en tant qu'utilisateur normal (pour que vos réglages prennent effet)

  • Type M-x customize-themes
  • Utilisez le lien pour migrer vos paramètres vers un thème.
  • Donnez un nom à votre thème. (J'ai décoché la case Remove saved theme settings from Custom save file. Je ne sais pas si cela a eu un effet)
  • Cliquez sur enregistrer le thème et notez l'endroit où le thème est enregistré.
  • Quittez emacs et copiez votre fichier de thème dans votre dossier de thème emacs par défaut (par exemple, ./usr/share/emacs/24.4/etc/themes/)
  • Maintenant, ouvrez emac avec sudo.
  • Type M-x customize-themes et vous devriez voir votre thème nouvellement créé comme sélectionnable.
  • Cliquez sur Enregistrer les paramètres du thème et votre session sudo utilisera désormais votre thème personnalisé à l'avenir.

J'aurais aimé qu'il y ait un moyen plus élégant de résoudre ce problème, mais cela fait l'affaire.

1voto

gurmeet Points 55

Jmq a raison. Une solution alternative délicate. Si vous êtes la seule personne autorisée à être sudoer ou à vous connecter en tant que root, vous pouvez ajouter un lien symbolique dans le répertoire /root/ à votre .emacs.d répertoire. Par exemple :

ls -l /root/.emacs
lrwxrwxrwx. 1 root root 18 May  5 11:14 /root/.emacs -> /home/<user>/.emacs

0voto

mtalexan Points 121

Jmq a la bonne idée, le problème est que emacs cherche dans les répertoires ~/ pour trouver votre fichier .emacs et vos scripts installés.

Sa suggestion de sudo -s si elle fonctionne, est la plus simple, mais il y a de fortes chances qu'elle ne fonctionne pas. Le problème est en fait de savoir comment votre sudoers est configuré. Le site sudoers est probablement configuré pour réinitialiser votre environnement, ce qui signifie qu'il ne conserve pas le répertoire HOME de votre utilisateur lorsqu'il exécute la commande sudo. Les options possibles sont présentées aquí comme la réponse la mieux notée, et en utilisant -s ne peut pas contourner la plupart des sudoers des paramètres qui vont tout faire foirer en premier lieu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X