Как проверить, какую оболочку я использую?

247

Я читал, что терминал - это не что иное, как оболочка, а Unix предоставляет различные варианты оболочек:

  • Bourne shell (sh)
  • C shell (csh)
  • TC shell (tcsh)
  • Korn shell (ksh)
  • Bourne Again shell (bash)

Вопросы:

  • Когда я открываю окно терминала, какая оболочка открывается по умолчанию?
  • Как проверить количество установленных оболочек?
  • Как изменить оболочку, используемую в моей учетной записи?
задан goutham 28.02.2015 в 03:58
источник

5 ответов

298

Вы можете ввести следующую команду в своем терминале, чтобы увидеть, какую оболочку вы используете:

echo $0

Результат будет выглядеть примерно так, как показано ниже, если вы используете терминал bash ( Bourne Again Shell ):

-bash
    
ответ дан kingmilo 28.02.2015 в 04:03
источник
83

Чтобы найти оболочку, которую вы используете в среде по умолчанию, вы можете проверить значение переменной среды SHELL :

echo $SHELL

Чтобы найти текущий экземпляр оболочки, найдите процесс (оболочку), имеющий PID текущего экземпляра оболочки.

Чтобы найти PID текущего экземпляра оболочки:

echo "$$"

Теперь, чтобы найти процесс с PID:

ps -p <PID>

Объединяя это:

ps -p "$$"
    
ответ дан heemayl 28.02.2015 в 04:06
источник
16

$SHELL дает вам оболочку по умолчанию. $0 дает вам текущую оболочку.

Например: у меня есть bash как моя оболочка по умолчанию, которую я использую для своего приложения Terminal. Но для моего приложения iTerm2 я использую эту команду при открытии окна: /bin/ksh .

Итак, мой $0 дает мне /bin/ksh на iTerm2. $SHELL дает мне /bin/bash на iTerm2. $0 , $SHELL дает мне /bin/bash на терминале

    
ответ дан nakulchawla09 18.11.2016 в 11:45
источник
5

Чтобы узнать, какая оболочка по умолчанию для вашего пользователя, вы можете запустить:

echo "$SHELL"

Например, если вы используете Bash, вы должны получить следующий вывод:

/bin/bash

Если вы не изменили какую-либо конфигурацию, он должен быть Bash, поскольку Bash это оболочка по умолчанию на Ubuntu.

    
ответ дан kos 28.02.2015 в 04:02
источник
3

Другие ответы, как правило, используют специальные функции оболочки, но мы пытаемся обнаружить, какую оболочку мы используем, поэтому они берут на себя ответ на проблему. Например, ни один из ответов не будет работать на рыбу.

sh -c 'ps -p $$ -o ppid=' | xargs ps -o cmd= -p

Вместо этого используйте синтаксис $$ при вызове sh, но тогда мы ищем PPID, а не PID. Используйте PPID, чтобы найти cmd.

sh -c 'ps -p $$ -o ppid=' | xargs -i readlink -f /proc/\{\}/exe

Спасибо за улучшение @muru

    
ответ дан Evan Benn 06.04.2018 в 04:00
источник

Ознакомьтесь с другими вопросами по меткам