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

Изменение настроек по умолчанию для PulseAudio

При запуске pulseaudio все настройки могут быть определены путем помещения пользовательских файлов конфигурации в скрытый каталог .pulse в вашем HOME. Если этот файл еще не существует, вы можете использовать стандартные файлы из /etc/pulse/ в качестве шаблона.

~/.pulse/default.pa для загрузки модулей и определения настроек по умолчанию ~/.pulse/client.conf для настройки клиента для звукового сервера ~/.pulse/daemon.conf для определения частоты дискретизации и буферов

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

pacmd list-sources

Затем мы редактируем следующую строку в [ f9]:

set-default-source [name]

и замените [name] на имя или номер источника для нужного источника. Затем нам нужно убедиться, что источник отключен, добавив эту строку:

set-source-mute [name]|[#n]> 0

Укажите имя или индекс вашего источника. Вы можете добавить множество других параметров, на которые ссылаются в PulseAudio Wiki (теперь на странице man: man pulse-cli-syntax).

Рекомендуется сначала проверить все команды через интерфейс командной строки, прежде чем изменять конфигурацию файлы. Это можно открыть с помощью pacmd в терминале

1
задан 24 March 2017 в 01:47

4 ответа

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

echo $SHELL

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

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

echo "$$"

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

ps -p <PID>

Объединение:

ps -p "$$"
60
ответ дан 23 May 2018 в 22:51
  • 1
    $ SHELL - это оболочка по умолчанию для системы (или пользователя), которая обычно (но не обязательно) оболочка, которая фактически используется в любой момент. – kingmilo 28 February 2015 в 08:13
  • 2
    @kingmilo: Правильно, да, ответ на изменение. – heemayl 28 February 2015 в 08:24
  • 3
    Я нашел это очень полезным при переключении на пользователя через 'su - & lt; username & gt;', например. для создания postgres, jenkins, ... – bully 7 October 2015 в 14:20
  • 4
    echo $SHELL дал мне /bin/csh и ps -p $$ дал мне 22673 pts/1 00:00:00 bash. Кингмило объяснил (выше), почему они не совпадают. – 18446744073709551615 30 October 2017 в 14:32
  • 5
    @ 18446744073709551615 Я тоже не сказал, что они такие же. Пожалуйста, внимательно прочитайте ответ; обратите внимание на значения по умолчанию и current . – heemayl 30 October 2017 в 17:34

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

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

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

14
ответ дан 23 May 2018 в 22:51
  • 1
    Это хорошая разница в других голосующих ответах. Спасибо. – Michael Hoffmann 14 February 2018 в 22:58

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

echo "$SHELL"

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

/bin/bash

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

5
ответ дан 23 May 2018 в 22:51
  • 1
    / bin / sh - это командный язык командной оболочки, а не оболочка Bourne, пожалуйста, отредактируйте свой ответ. – kingmilo 28 February 2015 в 08:07
  • 2
    @kingmilo В моем ответе нет ссылки /bin/sh – kos 28 February 2015 в 08:12
  • 3
    @kol было до редактирования. Также обратите внимание, что $ SHELL - это оболочка по умолчанию для системы (или пользователя), которая обычно (но не обязательно) является оболочкой, которая фактически используется в любой момент. – kingmilo 28 February 2015 в 08:14
  • 4
    @kingmilo Обратите внимание, что вопрос «когда я открываю терминал, какая оболочка открыта по умолчанию» " и что ответ «Если вы не изменили какую-либо конфигурацию, это должно быть Bash, потому что это оболочка по умолчанию на Ubuntu», поэтому ответ подходит к вопросу – kos 28 February 2015 в 08:22
  • 5
    @kingmilo Снова прочитав ответ, я думаю, что понимаю, что вас беспокоит, возможно, я не очень хорошо себя проявил. Я разъяснил значение «в настоящее время». в моем ответе – kos 28 February 2015 в 08:49

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

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

2
ответ дан 23 May 2018 в 22:51
  • 1
    Вы можете использовать ppid= / cmd=, чтобы опустить заголовки (и, следовательно, tail -1 s), и рассмотреть возможность просмотра файла /proc/.../exe, чтобы увидеть, какой файл выполняется (поскольку вывод cmd можно манипулировать любым запустил оболочку). – muru 6 April 2018 в 07:07
  • 2
    По-видимому, это не работает в busybox из-за несоответствия: ref: github.com/broadinstitute/cromwell/pull/… – Evan Benn 30 April 2018 в 08:04

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

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