$ PATH в Vim не соответствует терминалу

7134
donut

Я использую MacVim, и когда я не запускаю его из Terminal ( mvim), его $ PATH не включает то, что я установил в моем .bash_profile. Кажется, только значения по умолчанию /usr/bin:/bin:/usr/sbin:/sbin.

Я использую OS X 10.5.8. Даже если бы я мог установить его вручную в моем .vimrc, это было бы хорошо, хотя я бы предпочел, чтобы он извлекался из того же места, что и Терминал. Я пытался следовать тому, что предложил один сайт, let $PATH += /blah/foo:/bar/etcно безрезультатно.

Изменить / Решение: см. Мой ответ ниже. MacVim имеет возможность исправить это.

9
Подобный [вопрос здесь] (https://vi.stackexchange.com/q/15739/9850) Brad Parks 6 лет назад 0

10 ответов на вопрос

12
Telemachus

MacVim, кажется, получает $ PATH способом, который игнорирует пользовательские точечные файлы обычного пользователя.

Я не могу сказать, почему они предпочитают делать это таким образом, но, похоже, это правда. В настройках (на вкладке «Дополнительно») вы можете выбрать «Запустить процессы Vim в оболочке входа в систему», но это только $PATHнемного улучшит меня.

Лучшее, что я могу сказать, MacVim использует /usr/libexec/path_helper- который, в свою очередь, использует найденные элементы (1) в /etc/pathsфайле и (2) что-нибудь еще найденное в /etc/paths.d/каталоге. Любые изменения, сделанные в домашнем каталоге пользователя (с помощью .profileили тому подобное), игнорируются.

Короче говоря, вы получаете значения по умолчанию OSX, а также любые приложения, которые добавляют себя /etc/paths.d. (Например, MacTex делает это в моей системе.) Поэтому, если вы хотите изменить путь к MacVim, одним из способов будет добавление файла с элементами /etc/paths.d. (Я бы не стал редактировать напрямую /etc/pathsс тех пор, как вы рискуете, что изменения будут отменены обновлениями системы.)

Спасибо, что сообщили мне об этом. Я отправил сообщение об ошибке в MacVim.

Я бы тоже так подумал, но я добавил несколько вещей /etc/paths.d/, которые отображаются в терминале, но не в MacVim. donut 14 лет назад 0
И на самом деле, в моем файле / etc / paths больше, чем в пути MacVim. donut 14 лет назад 0
@ Донут: ну, это странно. На моей машине, если я добавлю что-нибудь в `/ etc / paths.d`, он появится при следующей загрузке MacVim. Какой формат вы там вводите? Я полагаю, что это должен быть один элемент в строке с каталогом $ PATH в каждой строке (например, / usr / texbin). Telemachus 14 лет назад 0
Первоначально я полностью пропустил ваш первый абзац: выбор «Запустить процессы Vim в оболочке входа в систему» ​​помог мне. Смотри мой ответ. donut 14 лет назад 0
7
L S

Кстати, предпочтение «Запустить процессы Vim в оболочке входа в систему» ​​больше не доступно в MacVim (по крайней мере, не v7.3). Я вижу, что запуск MacVim из Finder дает неверный путь, но запуск его из оболочки (как «mvim») дает правильный путь.

3
Richard Turner

Он не получен из .bash_profile, но вы можете использовать это в вашем .vimrc:

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

Вы должны иметь: или это не будет правильной переменной PATH.

Я только что попробовал, и это, похоже, не меняет $ PATH для MacVim. Я также проверил его с помощью Vim в терминале (как `/ usr / bin / vim` (от Apple), так и` / opt / local / bin / vim` (из MacPorts), и это кажется ненужным. Vim в терминале уже выбирает правильный путь $ PATH, полученный из моих точечных файлов. Telemachus 14 лет назад 0
Я попробовал это также безрезультатно. donut 14 лет назад 1
2
donut

Я не могу поверить, что я не видел этого раньше. Хорошо, я могу в это поверить. В любом случае, MacVim поставляется с опцией, которая решает эту проблему. В разделе «Настройки» просто установите флажок «Запустить процессы Vim в оболочке входа». Вот и все, это работает. Snazzy. Глупый я.

ой

Я случайно написал этот ответ, не понимая, что Телемах уже дал мне правильный ответ . Помечен как ответ.

Рад, что это отсортировано Telemachus 14 лет назад 0
1
Lawrence Velázquez

Эта статья Mac Dev Center может быть полезна.

Не могу заставить его работать. Могу сделать что-то не так. В статье предлагается добавить свойство «LSEnvironment» в «файл списка свойств информации» приложения, который я предположил как ~ / Library / Preferences / org.vim.MacVim.plist. Я сделал это словарь с «PATH» (также пробовал «путь» и «$ PATH») в качестве ключа и что я хочу для пути в качестве строкового значения. По-прежнему, кажется, извлекает PATH из какого-то таинственного источника. [Скриншот файла plist] (http://screencast.com/t/0B7vp3NwCv) donut 14 лет назад 0
1
Jan Hettich

У меня не было проблем с добавлением файла в каталог paths.d. Я добавил файл с именем mysql, содержимое которого было:

/ USR / местные / MySQL / бен [Return]

Затем я поместил этот файл в каталог paths.d и изменил его владельца на root: wheel. Теперь каталог mysql автоматически добавляется в мою переменную $ PATH.

Я не исследовал полностью, но, возможно, (a) включая [RETURN] в конце строки и / или (b) установку владельца файла на root, возможно, потребуется.

0
David Berger

Я знаю больше о Unix, чем о Mac, поэтому следующий совет может или не может работать. Попробуйте поместить этот файл .vimrc:

! source ~/.bash_profile 

Это может сработать, но есть небольшая оговорка: .bash_profile предназначен только для одного источника. Он может содержать некоторые неидемпотентные команды (вещи, которые должны выполняться только один раз). Дело в точке:

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

Чем больше вызывается, тем больше и больше резервируется $PATH. Тем не менее, если это не так уж и важно, рекомендуется для Unix ввести одноразовую команду ~/.bashrcи запустить ее source ~/.bashrcиз вашего .vimrcфайла.

Ни источник, ни .bash_profile, ни .bashrc не работали. Я попытался вручную запустить `: source .bash_profile`, но он просто выдает ошибку« Not the editor command »для каждой команды в файле и то же самое с .bashrc. donut 14 лет назад 0
извини ... о чем я думал ... ты можешь попробовать! источник .bash_profile David Berger 14 лет назад 0
Пробовал оба .bash_profile и .bashrc, но все равно не идти. Вот что я использую в своем .bash_profile для изменения PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' И в моем .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin: $ PATH'. И именно .bash_profile действительно влияет на мои сеансы терминала. donut 14 лет назад 0
0
a paid nerd

MacVim будет источником, ~/.zprofileи /etc/profile, таким образом, вы можете поместить свои PATHнастройки там.

См. Https://github.com/b4winckler/macvim/wiki/Trountication#for-zsh-users и этот вопрос о переполнении стека .

(Протестировано с MacVim версии 7.3 (65)).

0
Brad Parks

Я задал очень похожий вопрос на сайте Vim StackExchange и разместил там ответ, который мне подходит !

0
jladan

Я столкнулся с этим сегодня. MacVim больше не имеет опции «login shell», и редактирование общесистемных файлов для пользовательской настройки является схематичным.

Вот решение, использующее только параметры vim (см. :help :!И :help shell).

В вашем ~/.vimrcдобавить строки

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

Это делает bashвашу оболочку по умолчанию из (Mac) Vim и добавляет -lфлаг (оболочку входа в систему) к командам, вызываемым с помощью :!. При выполнении :shellbash запускается как «интерактивная оболочка, которая не является оболочкой входа в систему».

Чтобы сделать $PATHработу, нужно, чтобы она была установлена ~/.bash_profileдля :!и ~/.bashrcдля :shell. (См. INVOCATIONВ man bash)

ОБНОВЛЕНИЕ: Это не было необходимым на моем другом компьютере, так что, вероятно, что-то еще, что является основной причиной.

Вы можете сделать то же самое для Zsh. Определите `$ PATH` в` .zprofile` и включите флаг `-l` в` set shell` или `set shellcmdflag`. jladan 5 лет назад 0