Os shells não interativos não passam por toda a inicialização que um shell interativo faz. Consulte a seção INVOCATION da página de manual bash
(ou qualquer shell que você esteja segmentando) para obter detalhes.
Por outro lado, o bash irá procurar por um script chamado $BASH_ENV
e executá-lo antes de iniciar um shell não interativo. Use isso para configurar seu ambiente para escapes do shell do vim. Demonstração de linha de comando:
% bash -c 'alias'
<no output>
% export BASH_ENV=./special.aliases
% bash -c 'alias'
this=that
Mas, na verdade, você pode fazer muito melhor: defina a variável SHELL
como um programa de sua escolha, talvez apenas /bin/echo
, e o vim a chamará em vez de lançar um shell de difícil controle. Isso funciona mesmo se o seu comando incluir um pipeline ou outros metacaracteres do shell, então eu recomendo strongmente. (Você obterá o -c
que o vim insere ao bifurcar o "shell", mas tenho certeza de que você pode lidar com isso).