Как узнать, была ли текущая раковина загружена другой раковиной?

Когда я нахожусь в терминале, и я печатаю /bin/bash , который запускает другую раковину удара, правильно?

Действительно ли возможно узнать через некоторую команду, была ли текущая раковина удара начата с другой раковины удара?

Кроме того, что последствия старта - раковина в другом? (или разве это не имеет значения),

3
nl ja de

3 ответы

Версия, которая также работает с раковинами кроме удар :

ps -p `ps h -p $$ -o ppid` -o comm=
4
добавлено
Спасибо. (Я получаю те же самые результаты, как я делаю для enzotib' s отвечают также),
добавлено автор agnul, источник

С этой командой вы видите родительский процесс текущей раковины:

ps -o comm= -p $(echo $PPID)

Это работает в удар , где PPID переменная определяется, не знайте в других раковинах.

РЕДАКТИРУЮТ

Как @bmk замеченный, эхо материал - излишество и не необходимый:

ps -o comm= -p $PPID
3
добавлено
Спасибо, который работает. Мои результаты: Управление , который дает PS-o коммуникация =-p $ ($PPID эха) терминал гнома . Управление / bin/ удар , и затем , который дает PS-o коммуникация =-p $ ($PPID эха) удар .
добавлено автор agnul, источник
Правильный, PS-o коммуникация =-p $PPID также работает отлично.
добавлено автор agnul, источник
@bmk: о, да я начал с $PPID эха и изменил это без взглядов:),-1 для enzotib
добавлено автор Pepijn Schmitz, источник
Для чего вы на самом деле нуждаетесь в эхе ? Я думаю, что это должно также работать без него: PS-o коммуникация =-p $PPID
добавлено автор Shankari Amma, источник
@entotib: не было ничего неправильно с ним (поскольку вопрос был помечен с удар ). Поэтому: Это работает, и это делает то, что это должно. It' s просто немного наверху и doesn' t работают с различными раковинами.
добавлено автор Shankari Amma, источник

удар на самом деле проводит подсчет, что через специальное предложение, экспортировал переменную SHLVL .

$ echo "$SHLVL"
1
$ bash -c 'echo "$SHLVL"'
2

Если SHLVL равняется 2, хотя, это не обязательно означает, что родительский процесс - удар, это просто означает, что один из предков раковины - также удар или другой процесс, который экспортировал SHLVL (ksh устанавливает его также, я думаю).

Почему необходимо знать, является ли родитель раковины ударом?

И не, нет действительно никаких последствий управления раковиной в другой раковине. Это точно так же, как управляет любой другой командой в раковине.

0
добавлено
pro.bash
pro.bash
123 участник(ов)

All about Nix shells, signals, processes and development in general.