Я выполняю OS X. На энергии, если Вы делаете :sh
команда, можно опуститься до оболочки для выполнения команд. Я постоянно забываю, являюсь ли я в этой оболочке или нет.
Там какой-либо путь состоит в том, чтобы проверить, нахожусь ли я в оболочке, прибывающей из энергии?
Я ввожу ps
(без любых опций), и видят, перечислена ли энергия.
Можно посмотреть на название команды родительского процесса оболочки: ps -o comm= -p $PPID
. Вы могли, например, изменить свою подсказку для включения идентификатора родительского процесса.
Кроме того, если Вы только хотите изменить свою подсказку в оболочках, которые не работают непосредственно в эмуляторе терминала, можно протестировать это путем проверки, совпадает ли терминал управления оболочки со своим родительским процессом. Если родитель будет эмулятором терминала, то он не будет иметь своего собственного терминала как терминала управления.
Например, если Вы вставляете следующие строки Ваш ~/.kshrc
или ~/.bashrc
или ~/.zshrc
(выберите одно подходящее для своей оболочки), Ваша подсказка начнется {vim}
если оболочка работает под vim
:
parent_command=$(ps -o comm= -p $PPID)
parent_command=${parent_command##*/}
if [ "$(ps -o tty= -p $$)" = "$(ps -o tty= -p $PPID)" ]; then
# Not running directly under a terminal emulator
PS1="{$parent_command}$PS1"
fi
Можно ли также интересоваться частью обсуждения того, Как знать “уровень” оболочек, в которых я нахожусь?.