41 votes

Lancement d'im au démarrage d'Ubuntu

J'ai trouvé cette entrée de démarrage im-launch après avoir installé Ubuntu 19.10 qui exécute 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'

Je veux savoir l'objectif de cette entrée et ce qui se passerait si je la désactivais ?

35voto

UnKNOWn Points 19980

-e vérifie si le fichier /usr/bin/ibus-daemon existe ou non? L'existence signifie vrai, l'absence signifie faux.

! veut confirmer que la valeur ci-dessus est fausse. Si la valeur ci-dessus est vraie, rien ne sera exécuté.

[ "x$XDG_SESSION_TYPE" = "xwayland" ] cela peut avoir l'une des valeurs suivantes en fonction de votre choix de connexion à l'écran de connexion. Quelle session choisirez-vous, x11 ou wayland?

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

exemple de sortie de $XDG_SESSION_TYPE

administrator@pratap:~$ echo $XDG_SESSION_TYPE
x11

un autre exemple:

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

si la première expression est fausse et x$XDG_SESSION_TYPE = xwayland alors exécuter la commande env IM_CONFIG_CHECK_ENV=1 im-launch true

si la première expression est vraie ou si x$XDG_SESSION_TYPE n'est pas égal à xwayland, alors ne rien faire.

voir man test

! EXPRESSION
              EXPRESSION est fausse

et

   -e FICHIER
          FICHIER existe

vous pouvez en savoir plus sur ce que fait cette commande then exec env IM_CONFIG_CHECK_ENV=1 im-launch true;

voir man env & man im-launch


Par défaut dans Ubuntu 19.10 /usr/bin/ibus-daemon existe. donc la commande ne sera pas exécutée.

env IM_CONFIG_CHECK_ENV=1 im-launch true

lorsqu'il y a le fichier /usr/bin/ibus-daemon et que ma session est x11

voici quelque chose à propos d'IM

description de l'image

lorsqu'il n'y a pas de fichier /usr/bin/ibus-daemon et que ma session est wayland

voici la différence par rapport ci-dessus, ce qui signifie que l'env est appliqué, puis une réaction en chaîne a suivi.

description de l'image

donc, si vous désactivez ou activez ceci à partir de la liste de démarrage, rien ne se passe à moins qu'il n'y ait pas d'existence de ce fichier /usr/bin/ibus-daemon et que votre session soit wayland les conditions sont remplies.

5voto

J'ai fait des recherches sur la configuration d'Ubuntu pour le rendre plus performant et je suis arrivé ici, ce qui est intéressant.

Mon entrée de démarrage im-launch :

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

La réponse détaillée était de @UnKNOWn mais le commentaire de @foobar correspondait à ma situation, donc j'ai creusé.

Diviser la commande en parties :

sh est un interpréteur de langage de commande qui exécute des commandes lues à partir d'une chaîne de commande, de l'entrée standard ou d'un fichier spécifié.

La commande exec sous Linux est utilisée pour exécuter une commande à partir du bash lui-même.

if CONDITION true THEN execute COMMAND

La commande im-launch est utilisée pour démarrer un démon de serveur de cadre de méthode de saisie comme ibus-daemon, configurer les variables d'environnement appropriées pour les programmes clients, et exécuter le PROGRAMME-DE-SESSION comme x-session-manager.

ibus-daemon est un programme de démon pour ibus et c'est aussi un programme de démarrage pour les utilisateurs pour activer le démon ibus, les moteurs et le panneau.

Un démon est un programme informatique qui s'exécute en arrière-plan, plutôt que d'être sous le contrôle direct d'un utilisateur interactif.

ibus est un bus intelligent de saisie.

Un bus est simplement un ensemble de fils connectant plusieurs modules (processeur, mémoire, périphériques d'E/S).

Le exec

Alors ma question était pourquoi faire un exec env quand nous exécutons déjà la commande à partir de sh.

La commande exec remplace le processus de shell actuel par la commande spécifiée. Normalement, lorsqu'on exécute une commande, un nouveau processus est créé (fork), la commande exec ne crée pas de nouveau processus. Au lieu de cela, le processus actuel est superposé avec la nouvelle commande. En d'autres termes, la commande exec est exécutée à la place du shell actuel sans créer de nouveau processus.

Utilisation de env - Si vous voulez modifier l'environnement pour un programme avant d'exécuter le programme principal, vous écririez souvent un script et à la fin de celui-ci, démarreriez le programme principal. Mais il n'est pas nécessaire que le script reste en mémoire à ce moment-là. Ainsi, exec est utilisé dans ces cas pour que le programme principal puisse remplacer le script mère.

0voto

SirGawain Points 1

J'ai ajouté le commentaire suivant à mon élément de démarrage im-launch : "Vérifiez le type de serveur d'affichage, x11 ou wayland"

0voto

Swim Fan Points 1

J'ai seulement une chose à ajouter qui a été suggérée par @UnKNOWn et son commentaire.

IM-Launch pourrait signifier Méthode de saisie. Comme celle mentionnée sur wikipedia

Cela soutient également la réponse d'Anit en mentionnant le futur d'ibus que les lecteurs peuvent trouver sur wiki ici

En termes simples, il semblerait qu'il s'agisse d'une façon de vérifier quelle disposition de clavier/langue doit être utilisée.. mais je ne garantis rien ...D'après une recherche sur google, Microsoft a beaucoup à dire à ce sujet.

Je pensais juste que la partie 'IM' était semi importante et que les réponses précédentes n'étaient pas claires pour moi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X