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

Попробуйте эту команду: sudo tools/android update sdk --no-ui

SDK README:

Добро пожаловать в Android SDK! Первоначально архив Android SDK содержит только базовые инструменты SDK. В нем нет платформы Android или сторонних библиотек. Фактически, у него даже нет всех инструментов, необходимых для разработки приложения. Чтобы начать разработку приложений, вы должны установить Platform-инструменты и, по крайней мере, одну версию платформы Android, используя SDK Manager. Платформенные инструменты содержат средства сборки, которые периодически обновляются для поддержки новых функций платформы Android (поэтому они отделяются от базовых инструментов SDK), включая adb, dexdump и другие. Для установки платформ-инструментов, платформ Android и других надстроек необходимо иметь подключение к Интернету, поэтому, если вы планируете использовать SDK в автономном режиме, обязательно загрузите необходимые компоненты в режиме онлайн. Чтобы запустить SDK Manager, выполните программу «android». Из командной строки вы также можете напрямую инициировать обновление, выполнив: tools/android update sdk --no-ui
3
задан 2 May 2011 в 22:16

30 ответов

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

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

Это работает в bash, где определена переменная PPID, не знаю в других оболочках. [ ! d1]

РЕДАКТИРОВАТЬ

Как заметил @bmk, материал echo переполнен и не нужен:

ps -o comm= -p $PPID
3
ответ дан 25 May 2018 в 21:39
  • 1
    Спасибо, это работает. Мои результаты: Запуск ps -o comm= -p $(echo $PPID) дает gnome-terminal. Запуск /bin/bash, а затем ps -o comm= -p $(echo $PPID) дает bash. – Zabba 2 May 2011 в 22:28
  • 2
    Для чего вам действительно нужен echo? Я думаю, что он также должен работать без него: ps -o comm= -p $PPID – bmk 2 May 2011 в 22:34
  • 3
    Правильно, ps -o comm= -p $PPID также отлично работает. – Zabba 2 May 2011 в 22:35
  • 4
    @bmk: О да, я начал с echo $ PPID, и изменил это без мышления :), -1 для enzotib – enzotib 2 May 2011 в 22:35
  • 5
    @entotib: В этом не было ничего плохого (поскольку вопрос был помечен bash). Поэтому: Он работает, и он делает то, что должен. Это немного накладные расходы и не работает с разными оболочками. – bmk 2 May 2011 в 22:49

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

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

Это работает в bash, где определена переменная PPID, не знаю в других оболочках. [ ! d1]

РЕДАКТИРОВАТЬ

Как заметил @bmk, материал echo переполнен и не нужен:

ps -o comm= -p $PPID
3
ответ дан 25 July 2018 в 22:03

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

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

Это работает в bash, где определена переменная PPID, не знаю в других оболочках. [ ! d1]

РЕДАКТИРОВАТЬ

Как заметил @bmk, материал echo переполнен и не нужен:

ps -o comm= -p $PPID
3
ответ дан 26 July 2018 в 18:40

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

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

Это работает в bash, где определена переменная PPID, не знаю в других оболочках. [ ! d1]

РЕДАКТИРОВАТЬ

Как заметил @bmk, материал echo переполнен и не нужен:

ps -o comm= -p $PPID
3
ответ дан 31 July 2018 в 13:16

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

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

Это работает в bash, где определена переменная PPID, не знаю в других оболочках. [ ! d1]

РЕДАКТИРОВАТЬ

Как заметил @bmk, материал echo переполнен и не нужен:

ps -o comm= -p $PPID
3
ответ дан 2 August 2018 в 03:35

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

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

Это работает в bash, где определена переменная PPID, не знаю в других оболочках. [ ! d1]

РЕДАКТИРОВАТЬ

Как заметил @bmk, материал echo переполнен и не нужен:

ps -o comm= -p $PPID
3
ответ дан 4 August 2018 в 19:36

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

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

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

EDIT

As @ bmk заметил, что материал echo переполнен и не нужен:

  ps -o comm = -p $ PPID  
3
ответ дан 6 August 2018 в 03:42

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

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

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

EDIT

As @ bmk заметил, что материал echo переполнен и не нужен:

  ps -o comm = -p $ PPID  
3
ответ дан 7 August 2018 в 21:36

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

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

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

EDIT

As @ bmk заметил, что материал echo переполнен и не нужен:

  ps -o comm = -p $ PPID  
3
ответ дан 10 August 2018 в 09:51

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

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

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

EDIT

As @ bmk заметил, что материал echo переполнен и не нужен:

  ps -o comm = -p $ PPID  
3
ответ дан 13 August 2018 в 16:08
  • 1
    Спасибо, это работает. Мои результаты: Запуск ps -o comm = -p $ (echo $ PPID) дает gnome-terminal . Запуск / bin / bash , а затем ps -o comm = -p $ (echo $ PPID) дает bash . – Zabba 2 May 2011 в 22:28
  • 2
    Для чего вам действительно нужно echo ? Я думаю, что он также должен работать без него: ps -o comm = -p $ PPID – bmk 2 May 2011 в 22:34
  • 3
    Правильно, ps -o comm = -p $ PPID также отлично работает. – Zabba 2 May 2011 в 22:35
  • 4
    – enzotib 2 May 2011 в 22:35
  • 5
    @entotib: В этом нет ничего плохого (так как вопрос был помечен bash ). Поэтому: Он работает, и он делает то, что должен. Это немного накладные расходы и не работает с разными оболочками. – bmk 2 May 2011 в 22:49

Версия, которая также работает с оболочками, отличными от bash, это:

ps -p `ps h -p $$ -o ppid` -o comm=
4
ответ дан 25 May 2018 в 21:39
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

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

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

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

Зачем вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 25 May 2018 в 21:39

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

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

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

Зачем вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 25 July 2018 в 22:03

Версия, которая также работает с оболочками, отличными от bash, это:

ps -p `ps h -p $$ -o ppid` -o comm=
4
ответ дан 25 July 2018 в 22:03
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

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

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

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

Зачем вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 26 July 2018 в 18:40

Версия, которая также работает с оболочками, отличными от bash, это:

ps -p `ps h -p $$ -o ppid` -o comm=
4
ответ дан 26 July 2018 в 18:40
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

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

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

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

Зачем вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 31 July 2018 в 13:16

Версия, которая также работает с оболочками, отличными от bash, это:

ps -p `ps h -p $$ -o ppid` -o comm=
4
ответ дан 31 July 2018 в 13:16
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

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

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

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

Зачем вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 2 August 2018 в 03:35

Версия, которая также работает с оболочками, отличными от bash, это:

ps -p `ps h -p $$ -o ppid` -o comm=
4
ответ дан 2 August 2018 в 03:35
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

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

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

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

Зачем вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 4 August 2018 в 19:36

Версия, которая также работает с оболочками, отличными от bash, это:

ps -p `ps h -p $$ -o ppid` -o comm=
4
ответ дан 4 August 2018 в 19:36
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

Версия, которая также работает с оболочками, отличными от bash , это:

  ps -p `ps h -p $$ -o ppid` -o comm =   
4
ответ дан 6 August 2018 в 03:42

bash на самом деле считает, что с помощью специальной экспортированной переменной SHLVL .

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

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

Почему вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 6 August 2018 в 03:42

bash на самом деле считает, что с помощью специальной экспортированной переменной SHLVL .

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

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

Почему вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 7 August 2018 в 21:36

Версия, которая также работает с оболочками, отличными от bash , это:

  ps -p `ps h -p $$ -o ppid` -o comm =   
4
ответ дан 7 August 2018 в 21:36

Версия, которая также работает с оболочками, отличными от bash , это:

  ps -p `ps h -p $$ -o ppid` -o comm =   
4
ответ дан 10 August 2018 в 09:51

bash на самом деле считает, что с помощью специальной экспортированной переменной SHLVL .

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

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

Почему вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 10 August 2018 в 09:51

bash на самом деле считает, что с помощью специальной экспортированной переменной SHLVL .

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

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

Почему вам нужно знать, является ли родитель вашей оболочки bash?

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

0
ответ дан 13 August 2018 в 16:08

Версия, которая также работает с оболочками, отличными от bash , это:

  ps -p `ps h -p $$ -o ppid` -o comm =   
4
ответ дан 13 August 2018 в 16:08
  • 1
    Благодарю. (Я получаю те же результаты, что и для ответа энзотиба) – Zabba 2 May 2011 в 22:33

Другие вопросы по тегам:

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