Что это означает в моих настройках приложений для запуска? [дубликат]

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

Я хочу знать цель этой записи и что произойдет, если я отключу ее?

32
задан 20 April 2020 в 11:10

1 ответ

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

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

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

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

Breaking The Command Down:

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

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

if CONDITION true THEN execute COMMAND

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

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

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

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

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

The exec

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

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

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

2
ответ дан 28 July 2021 в 11:15

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

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