Emacs e / etc / profile no OS X

1

Quando executo um shell ( M-x shell ) no Emacs.app, o shell gerado não lê (ou mais especificamente, source ), /etc/profile durante a inicialização (eu tenho muitas personalizações de shell localizadas lá) ).

Eu tenho a variável path definida em ~ / .MacOSX / environment.plist, como é necessário para fazer com que o Emacs.app leia $ PATH, então eu fiz uma das adaptações necessárias para acomodar o Emacs ao OS X. não parece ter nada a ver com a variável PATH, mas tem a ver com a inicialização do próprio shell.

    
por Pinochle 17.08.2009 / 01:04

1 resposta

3

Ok, aqui está o que eu fiz para resolver o problema. É baseado uma resposta a esta pergunta do StackOverflow , que encontrei depois de misturar um pouco meus termos de pesquisa no Google. Eu adicionei a seguinte linha a .bashrc :

source /etc/profile

Tudo funciona como deveria agora.

EDIT: Por que o problema ocorre

Eu descobri por que você tem que forçar explicitamente o shell BASH a ler / etc / profile em vez de lê-lo na invocação. Aqui está a seção relevante do manual BASH ( man bash ):

When an interactive shell that is not a login shell is started, bash reads and executes commands from ˜/.bashrc, if that file exists. This may be inhibited by using the −−norc option. The −−rcfile file option will force bash to read and execute commands from file instead of ˜/.bashrc.

Pode-se inferir da maneira como isso é escrito (e o que diz sobre como invocar shells de login antes disso) é que shell.el não invoca um shell de login. Eu procurei por evidência disso em shell.el e parece ser verdade, BASH é invocado com o sinalizador -i (interativo), mas não o sinalizador --login . Os shells não-login lêem .bashrc , então é por isso que você pode contornar o problema colocando source /etc/profile em .bashrc .

    
por 17.08.2009 / 01:58