Как Обнаружить, что Текущий (Bash) Shell является (Vi/Vim) Подоболочкой?

Из Vi/Vim я могу ввести:

:shell

заскакивать в оболочку.

Там какой-либо путь состоит в том, чтобы обнаружить, что я нахожусь в подоболочке Vi-spawned?

SHLVL переменной окружения равняется 2, но это не говорит мне явно, что я нахожусь в подоболочке Vi/Vim-spawned.

На OS X также установлены следующие переменные: MYVIMRC, VIMRUNTIME, VIM.

Насколько универсальный это? Я могу рассчитывать на то, чтобы они были установленным в какой-либо системе, если и только если я нахожусь в подоболочке Vi/Vim?

В противном случае действительно ли там кто-либо портативен, устойчив и надо надеяться эффективный способ сказать, что я нахожусь в подоболочке Vi/Vim?

Спасибо.

3
задан 27.03.2010, 00:27

2 ответа

Я вижу те те же переменные в Ubuntu 9.10 с Vim 7.2 и под Cygwin 1.7 с Vim 7.2 в соответствии с Vista.

Вот документация.

Отметьте это MYVIMRC может не присутствовать, если существует нет .vimrc файл.

2
ответ дан 08.12.2019, 01:10

Я не знаю OSX слишком хорошо, но если он имеет/proc файловую систему, можно, вероятно, проверить название родительского процесса, как это:

parent=$(</proc/$PPID/exename)
if expr match $parent $(which vim) > /dev/null
then
    ...
fi
1
ответ дан 08.12.2019, 01:10

Теги

Похожие вопросы