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».
