O Emacs não está carregando o arquivo init quando executado como sudo

2

O Emacs carrega meu arquivo de inicialização .emacs.d/init.el bem quando executado como um usuário comum, mas se recusa a carregá-lo quando executado como sudo emacs file.type . Eu tentei alterar o proprietário de .emacs.d para root sem sucesso.

    
por user320093 03.05.2014 / 03:01

5 respostas

5

Eu sou um pouco de tópico, mas você poderia usar o Emacs como um usuário normal e tramp para abrir o arquivo como root:

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

irá pedir sua senha sudo e abrir o arquivo como root.

    
por 03.05.2014 / 09:32
3

Quando você executa como sudo add -s para preservar seu ambiente. Não está mantendo seu ambiente, portanto, seu diretório HOME foi perdido. O Emacs analisa ~/.emacs, ~/.emacs.el, or ~/.emacs.d/init.el , por isso, se você perder HOME, perder o pathing para seus arquivos de inicialização.

    
por 03.05.2014 / 03:08
2

sudo -s não funcionou para mim. Aqui está o trabalho que eu usei.

Carregue o emacs como um usuário normal (para que suas configurações entrem em vigor)

  • Digite M-x customize-themes
  • Use o link para migrar suas configurações para um tema.
  • Dê um nome ao seu tema. (Desbloqueei as configurações do tema salvo do arquivo de salvamento personalizado. Não sei se isso afetou)
  • Clique em salvar tema e observe onde o tema é salvo.
  • Saia do emacs e copie o arquivo do seu tema para a pasta padrão do tema emacs (por exemplo, ./usr/share/emacs/24.4/etc/themes /)
  • Agora, abra o emac com o sudo.
  • Digite M-x customize-themes novamente e você verá o tema recém-criado como selecionável.
  • Clique em Salvar configurações de tema e sua sessão sudo agora usará seu tema personalizado no futuro.

Eu gostaria que houvesse uma maneira mais elegante de consertar isso, mas ele faz o trabalho.

    
por 24.05.2015 / 19:01
1

jmq está certo. Em alternativa solução complicada. Se você é o único autorizado a ser sudoer ou se logar como root, você pode adicionar um link simbólico em /root/ ao seu diretório .emacs.d . Por exemplo:

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

O jmq tem a idéia certa, o problema é que o emacs procura nos diretórios ~ / para localizar seu arquivo .emacs e seus scripts instalados.

Sua sugestão de sudo -s , se funciona, é a mais simples, mas há uma boa chance de não funcionar. O problema é realmente uma questão de como seu sudoers é configurado. É provável que a configuração sudoers redefina seu ambiente, o que significa que ele não preserva o diretório HOME do usuário quando ele executa o comando sudo. As opções possíveis são apresentadas aqui como a melhor resposta, e usando -s não pode contornar a maioria das configurações de sudoers que vão estragar tudo primeiro lugar.

    
por 16.06.2015 / 04:19

Tags