Можно ли узнать, какой распознанный аромат я использую с помощью терминала?

У меня есть набор функций в скрипте bash, которые я хочу запускать только на определенных версиях Ubuntu. Например, я хочу запустить следующее, если я использую Unity:

gsettings set com.canonical.indicator.datetime show-week-numbers true

но следующее, если я использую Ubuntu GNOME:

gsettings set org.gnome.shell.calendar show-weekdate true

и аналогично, разные команды для разных разновидностей Ubuntu.

Я пытался увидеть содержимое /etc/os-release, но он не дает никакой информации о вкусе Ubuntu. Следующее, когда запускается на Ubuntu GNOME:

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

Можно ли узнать, какой распознанный аромат я использую с помощью терминала? Я бы предпочел решение, которое работает "из коробки", без установки каких-либо других пакетов как для реальных, так и для установленных сред. Поиск того, какие пакеты установлены, возможен, но я бы предпочел не идти по этому пути, хотя вы можете дать ответ в этом направлении.

4 ответа

Это команда, которую я использую. Это работает для меня все время:

cat /var/log/installer/media-info 

Вывод (моя система) Правильно говорит, что я запускаю Kubuntu

Kubuntu 14.04 LTS "Trusty Tahr" - Beta amd64 (20140326.2)

Может быть, не такой, как Kubuntu, Xubuntu, Lubuntu и т. Д. Потому что, как комментирует Oli и terdon, вы можете установить Kubuntu, но с XFCE в качестве рабочего стола.

Таким образом, вы можете получить значение переменной окружения XDG_CURRENT_DESKTOP, чтобы узнать, что работает текущий рабочий стол.

например:

  • echo $XDG_CURRENT_DESKTOP

Замечания:
Значения переменной могут быть Unity, GNOME, XFCE, KDE, LXDE, Pantheon (Elementary os).

Надеюсь это поможет.

Установите оба. Установите все. Огонь и забудь.

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

Если ваша цель - сделать некоторые настройки рабочего стола значениями по умолчанию для всех пользователей, гораздо проще позволить ОС сделать это за вас, используя переопределения схемы Gsettings. Например, создать/usr/share/glib-2.0/schemas/99_my-settings.gschema.override содержащие ваши настройки следующим образом:

[com.canonical.indicator.datetime]
show-week-numbers=true

[org.gnome.desktop.calendar]
show-weekdate=true

Используйте редактор Dconf или инструменты интерфейса командной строки, чтобы проверить правильность схемы (в квадратных скобках) для каждого параметра. Вы можете сгруппировать несколько параметров в каждой схеме. Наконец, запустите это, чтобы сделать их значениями по умолчанию для всех пользователей:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

Таким образом, вам даже не придется запускать какие-либо сценарии, поскольку при запуске каждая среда рабочего стола находит свои новые настройки по умолчанию. Кроме того, пользователи смогут персонализировать их без скрытого сценария запуска, снова меняющего их.

Вот еще немного информации: https://developer.gnome.org/gio/stable/glib-compile-schemas.html

Следующие if покажет вам, используете ли вы Unity или нет:

if [[ "$(ps -ef | grep unity | grep $USER | grep -v grep)" =~ "unity" ]]; then 
    echo "I'm running Unity"; 
fi

Таким же образом вы можете проверить, используете ли вы GNOME или другие версии. Важно то, какое (часть) название процесса вы используете в первую очередь grep, Вы должны различать конкретный процесс, который все время выполняется только в той разновидности, которая вас интересует.

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