Неинтерактивные оболочки не проходят всю инициализацию, которую делает интерактивная оболочка. Подробности смотрите в разделе INVOCATION на bash
странице руководства (или на какую оболочку вы нацеливаете).
С другой стороны, bash будет искать сценарий с именем в $BASH_ENV
и выполнять его перед запуском неинтерактивной оболочки. Используйте это, чтобы настроить вашу среду для экранирования оболочки vim. Демонстрация командной строки:
% bash -c 'alias' <no output> % export BASH_ENV=./special.aliases % bash -c 'alias' this=that
Но на самом деле вы можете сделать намного лучше: установите SHELL
переменную в программу по вашему выбору, возможно, просто /bin/echo
, и vim будет вызывать ее вместо запуска трудноуправляемой оболочки. Это работает, даже если ваша команда содержит конвейер или другие метасимволы оболочки, поэтому я настоятельно рекомендую это сделать. (Вы получите те -c
vim-вставки, когда разветвляете «оболочку», но я уверен, что вы справитесь с этим).