im-launch в запуске Ubuntu

Я нашел эту запись запуска im-launch после установки Ubuntu 19.10, которая выполняет sh -c 'if ! [ -e "/usr/bin/ibus-daemon" ] && [ "x$XDG_SESSION_TYPE" = "xwayland" ] ; then exec env IM_CONFIG_CHECK_ENV=1 im-launch true; fi'

Мой вопрос: какова цель этой записи и что произойдет, если я ее отключил?

4 ответа

Решение

-e проверьте файл /usr/bin/ibus-daemon существует или нет? существовать означает истина не существует значит ложь.

! хочет подтвердить, что указанное выше значение равно false, если указанное выше значение равно true, оно ничего не выполнит.

[ "x$XDG_SESSION_TYPE" = "xwayland" ] это может иметь одно из следующих значений в зависимости от того, как вы решите войти на экране входа. какую сессию вы выберете x11 или wayland.

"xx11" = "xwayland" "xwayland" = "xwayland"

пример вывода $XDG_SESSION_TYPE

administrator@pratap:~$ echo $XDG_SESSION_TYPE
x11

другой пример:

administrator@pratap:~$ echo $XDG_SESSION_TYPE
wayland
administrator@pratap:~$ 

если 1-е выражение ложно и x$XDG_SESSION_TYPE = xwayland, тогда выполните команду env IM_CONFIG_CHECK_ENV=1 im-launch true

если первое выражение истинно или x$XDG_SESSION_TYPE не равно xwayland, тогда ничего не делайте.

видеть man test

! EXPRESSION
              EXPRESSION is false

а также

   -e FILE
          FILE exists

Вы можете прочитать больше о том, что делает эта команда then exec env IM_CONFIG_CHECK_ENV=1 im-launch true;

видеть man env & мужчина im-launch


По умолчанию в Ubuntu 19.10 /usr/bin/ibus-daemon существует. поэтому команда не будет выполнена.

env IM_CONFIG_CHECK_ENV=1 im-launch true

когда есть файл /usr/bin/ibus-daemon и моя сессия x11

вот кое-что о IM

когда нет файла /usr/bin/ibus-daemon и моя сессия wayland

здесь есть вещь, которая отличается от описанной выше, что означает применение env и последующую цепную реакцию.

Итак, если вы отключите или включите это из списка автозагрузки, ничего не произойдет, если этот файл не существует /usr/bin/ibus-daemon и ваша сессия wayland условия соблюдены.

Я проводил некоторые исследования о том, как настроить Ubuntu, чтобы сделать его более производительным, и оказался здесь, что интересно.

Моя запись запуска:

      sh -c 'if [ "x$XDG_SESSION_TYPE" = "xwayland" ] ; then exec env IM_CONFIG_CHECK_ENV=1 im-launch true; fi'

Поскольку ответ был подробно описан @UnKNOWn, но комментарий @foobar был моей ситуацией, поэтому я глубоко погрузился.

Разрушение команды:

это интерпретатор командного языка, который выполняет команды, считанные из строки командной строки, стандартного ввода или указанного файла.

команда в Linux используется для выполнения команды из самого bash.

if CONDITION true THEN execute COMMAND

im-launchКоманда используется для запуска демона сервера инфраструктуры метода ввода, такого как ibus-daemon, установки соответствующих переменных среды для клиентских программ и выполнения SESSION-PROGRAM, такой как x-session-manager.

ibus-daemonэто программа-демон для ibus, а также программа запуска, позволяющая пользователям активировать демон ibus, механизмы и панель.

daemonэто компьютерная программа, которая работает как фоновый процесс, а не находится под непосредственным контролем интерактивного пользователя.

ibusявляется интеллектуальной входной шиной.

busпредставляет собой просто набор проводов, соединяющих несколько модулей (процессор, память, устройства ввода-вывода).

The

Тогда мой вопрос был, почему exec envкогда мы уже выполняем команду из sh.

The execкоманда заменяет текущий процесс оболочки указанной командой. Обычно, когда вы запускаете команду, порождается (разветвляется) новый процесс, команда exec не порождает новый процесс. Вместо этого текущий процесс перекрывается новой командой. Другими словами, команда exec выполняется вместо текущей оболочки без создания нового процесса.

Использование env- Если вы хотите изменить среду для программы перед выполнением основной программы, вы часто пишете сценарий и в конце запускаете основную программу. Но нет необходимости, чтобы сценарий оставался в памяти в это время. Таким образом, в этих случаях используется exec, чтобы основная программа могла заменить материнский скрипт.

Я могу добавить только одно, на что намекнул @UnKNOWn и его комментарий.

IM-Launch может означать метод ввода. Такой, как тот, что упоминается в википедии

Это также поддерживает ответ Анита, упомянув, что будущие читатели ibus могут найти его на вики здесь .

Проще говоря, это может показаться способом проверить, какую раскладку клавиатуры / язык следует использовать ... но я бы не стал цитировать меня ... Из поиска Google Microsoft может многое сказать по этому вопросу.

Просто подумал, что бит «IM» был полуважным, и приведенные выше ответы были неясны для меня.

Я добавил следующий комментарий к элементу запуска im-launch: «Проверьте тип сервера отображения, x11 или wayland».

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