$ PATH no Vim não corresponde ao Terminal

10

Estou usando o MacVim e quando não o inicio no Terminal ( mvim), o $ PATH não inclui o que defini no meu .bash_profile. Parece apenas ter os valores padrão /usr/bin:/bin:/usr/sbin:/sbin,.

Estou executando o OS X 10.5.8. Mesmo se eu pudesse configurá-lo manualmente no meu .vimrc, tudo estaria bem, embora eu prefira que ele saia do mesmo local que o Terminal. Eu tentei seguir o que um site sugeriu, adicionando let $PATH += /blah/foo:/bar/etcsem sucesso.

Editar / Solução: Veja minha resposta abaixo. O MacVim tem uma opção para corrigir isso.

rosquinha
fonte
Pergunta
Brad Parks

Respostas:

12

O MacVim parece estar recebendo o $ PATH de uma maneira que ignora os arquivos de pontos personalizados de um usuário comum.

Não sei dizer por que eles preferem fazer dessa maneira, mas parece ser verdade. Nas preferências (na guia Avançado), você pode optar por "Iniciar processos do Vim em um shell de login", mas isso apenas melhora um $PATHpouco para mim.

O melhor que posso dizer, o MacVim usa /usr/libexec/path_helper- que, por sua vez, usa os itens encontrados (1) no /etc/pathsarquivo e (2) qualquer coisa adicional encontrada no /etc/paths.d/diretório. Quaisquer alterações feitas no diretório inicial de um usuário (via .profileou similar) são ignoradas.

Em poucas palavras, você obtém os padrões do OSX, além de todos os aplicativos aos quais se adicionam /etc/paths.d. (Por exemplo, o MacTex faz isso no meu sistema.) Portanto, se você deseja ajustar o caminho do MacVim, uma maneira seria adicionar um arquivo com itens a /etc/paths.d. (Não editaria diretamente /etc/pathsdesde então, você corre o risco de as alterações serem desfeitas pelas atualizações do sistema.)

Obrigado por me informar isso. Vou arquivar um bug da lista de desejos no MacVim.

Telêmaco
fonte
Eu também pensaria nisso, mas adicionei algumas coisas '/etc/paths.d/' que aparecem no Terminal, mas não no MacVim.
rosquinha
E, na verdade, há mais no meu arquivo '/ etc / caminhos' do que o que está no caminho do MacVim.
31909 donut
@ Donut: bem, isso é estranho. Na minha máquina, se eu adicionar algo /etc/paths.d, ele aparecerá na próxima vez que eu inicializar o MacVim. Que formato você está colocando aí? Deve ser um item por linha, acredito, com um diretório $ PATH em cada linha (por exemplo, / usr / texbin).
Telemachus
Eu perdi totalmente o seu primeiro parágrafo originalmente: a opção "Iniciar processos do Vim em um shell de login" fez o truque para mim. Veja minha resposta.
doughnut
7

BTW, a preferência "Iniciar processos do Vim em um shell de login" não está mais disponível no MacVim (pelo menos, não na v7.3). Vejo que iniciar o MacVim a partir do Finder pega o caminho errado, mas iniciá-lo a partir de um shell (como "mvim") obtém o caminho correto.

LS
fonte
3

Não é proveniente de .bash_profile, mas você pode usá-lo em seu arquivo .vimrc:

let $PATH=$PATH . ':/blah/foo'

Você precisa ter o:: ou não será uma variável PATH correta.

Richard Turner
fonte
Eu apenas tentei, e isso não parece mudar o $ PATH para MacVim. Eu também testei com o Vim no Terminal ( /usr/bin/vimda Apple) e /opt/local/bin/vim(do MacPorts), e isso parece desnecessário.O Vim no terminal já pega o $ PATH adequado conforme fornecido pelos meus arquivos de ponto.
Telemachus
1
Eu tentei isso também sem sucesso.
rosquinha
2

Não acredito que não vi isso antes. Ok, eu posso acreditar. De qualquer forma, o MacVim vem com uma opção que resolve isso. Em Preferências, basta marcar "Iniciar processos do Vim em um shell de login". É isso, funciona. Snazzy. Eu sou estúpido.

Opa

Eu acidentalmente escrevi essa resposta sem perceber que Telêmaco já havia me dado a resposta correta . Marcou o dele como a resposta.

rosquinha
fonte
Ainda bem que está classificado
Telêmaco
1

Este artigo do Mac Dev Center pode ser de alguma utilidade.

Lawrence Velázquez
fonte
Não consigo fazer funcionar. Pode estar fazendo algo errado. O artigo sugere adicionar a propriedade 'LSEnvironment' no 'arquivo de lista de propriedades de informações' de um aplicativo, que eu supunha ser ~ / Library / Preferences / org.vim.MacVim.plist. Eu criei um dicionário com 'PATH' (também tentei 'path' e '$ PATH') como a chave e o que eu quero para o caminho como um valor de string. Ainda parece estar puxando PATH de alguma fonte misteriosa. Captura de tela do arquivo plist
rosquinha
1

Não tive problemas para adicionar um arquivo ao diretório paths.d. Eu adicionei um arquivo chamado mysql, cujo conteúdo era:

/ usr / local / mysql / bin [Voltar]

Em seguida, coloquei esse arquivo no diretório paths.d e alterei sua propriedade para root: wheel. Agora o diretório mysql é adicionado automaticamente à minha variável $ PATH.

Não investiguei completamente, mas possivelmente (a) incluindo o [RETURN] no final da linha e / ou (b) definindo a propriedade do arquivo como raiz, pode ser necessário.

Jan Hettich
fonte
1

Encontrei isso hoje. O MacVim não possui mais a opção "login shell" e a edição de arquivos em todo o sistema para uma configuração específica do usuário é superficial.

Aqui está uma solução usando apenas as opções do vim (consulte :help :!e :help shell).

No seu ~/.vimrcadicione as linhas

set shell=/bin/bash
set shellcmdflag=-l\ -c

Isso torna bashseu shell padrão no (Mac) Vim e adiciona o -lsinalizador (shell de login) aos comandos chamados :!{cmd}. Ao executar :shell, o bash é iniciado como um "shell interativo que não é um shell de logon".

Para fazer o $PATHtrabalho, você precisa configurá-lo ~/.bash_profilepara :!e ~/.bashrcpara :shell. (Ver INVOCATIONem man bash)

ATUALIZAÇÃO: Isso não era necessário no meu outro computador, portanto, provavelmente existe outra coisa que é a causa raiz.

jladan
fonte
1
Você pode fazer uma coisa semelhante para o zsh. Defina $PATHem .zprofilee inclua o -lsinalizador em set shellou set shellcmdflag.
jladan
0

Eu sei mais sobre unix do que sobre macs, portanto, os seguintes conselhos podem ou não funcionar. Tente colocar este arquivo .vimrc:

! source ~/.bash_profile

Isso pode ajudar, mas há uma pequena ressalva: o .bash_profile deve ser originado apenas uma vez. Pode conter alguns comandos não idempotentes (coisas que devem ser executadas apenas uma vez). Caso em questão:

$PATH += /blah/foo:/bar/etc

Quanto mais é chamado, maior e mais redundante $PATHé. No entanto, se isso não for grande coisa, a recomendação no unix seria colocar o comando único ~/.bashrce executar a source ~/.bashrcpartir do seu .vimrcarquivo.

David Berger
fonte
Nem o sourcing .bash_profile ou .bashrc funcionaram. Tentei executar manualmente, :source .bash_profilemas ele aparece com um erro "Não é um comando do editor" para todos os comandos no arquivo e o mesmo com .bashrc.
29289 donut
desculpe ... o que eu estava pensando ... você pode tentar! fonte .bash_profile
David Berger
Tentei tanto .bash_profile e .bashrc, mas ainda assim não é possível. Aqui está o que estou usando no meu .bash_profile para alterar PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' .bashrc: 'export PATH = / Aplicativos / MAMP / bin / php5 / bin: $ PATH'. E é .bash_profile que realmente afeta minhas sessões do Terminal.
rosquinha
0

Fiz uma pergunta muito semelhante no site do Vim StackExchange e postei uma resposta que funciona para mim!

Brad Parks
fonte