Nicht interaktive Shells durchlaufen nicht die gesamte Initialisierung einer interaktiven Shell. Weitere Informationen finden Sie im Abschnitt INVOCATION der bash
Manpage (oder der Shell, auf die Sie abzielen).
Auf der anderen Seite sucht bash nach einem Skript mit dem Namen $BASH_ENV
und führt es aus, bevor eine nicht interaktive Shell gestartet wird. Verwenden Sie diese Option, um Ihre Umgebung für vim-Shell-Fluchten einzurichten. Befehlszeile Demonstration:
% bash -c 'alias' <no output> % export BASH_ENV=./special.aliases % bash -c 'alias' this=that
Aber Sie können tatsächlich viel besser als das: Setzen Sie die SHELL
Variable vielleicht einfach auf ein Programm Ihrer Wahl /bin/echo
, und vim ruft sie an, anstatt eine schwer kontrollierbare Shell zu starten. Dies funktioniert auch, wenn Ihr Befehl eine Pipeline oder andere Shell-Metazeichen enthält. Daher empfehle ich es dringend. (Sie erhalten die -c
vim-Einsätze, wenn Sie die "Schale" fälschen, aber ich bin sicher, dass Sie damit umgehen können).