AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1192517
Accepted
Afsal
Afsal
Asked: 2019-11-30 06:57:30 +0800 CST2019-11-30 06:57:30 +0800 CST 2019-11-30 06:57:30 +0800 CST

im-launch 在 Ubuntu 启动

  • 772

我在安装执行的 Ubuntu 19.10 后发现了这个 im-launch 启动条目 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'

我想知道这个条目的目的,如果我禁用它会发生什么?

startup startup-applications
  • 4 4 个回答
  • 47826 Views

4 个回答

  • Voted
  1. Best Answer
    UnKNOWn
    2019-11-30T07:23:16+08:002019-11-30T07:23:16+08:00

    -e检查文件是否/usr/bin/ibus-daemon存在?存在意味着真 不存在意味着假。

    !想要确认上面的值是假的,如果上面的值是真的,它不会执行任何东西。

    [ "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:~$ 
    

    如果第一个表达式为假并且 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满足条件,否则不会发生任何事情。

    • 37
  2. Anit Shrestha
    2021-01-29T01:58:29+08:002021-01-29T01:58:29+08:00

    我正在研究如何配置 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 的评论是我的情况,所以我进行了深入研究。

    分解命令:

    sh是一个命令语言解释器,它执行从命令行字符串、标准输入或指定文件读取的命令。

    execLinux 中的 command 用于从 bash 本身执行命令。

    if CONDITION true THEN execute COMMAND

    im-launch命令用于启动输入法框架服务器守护程序,例如 ibus-daemon,为客户端程序设置适当的环境变量,并执行 SESSION-PROGRAM,例如 x-session-manager。

    ibus-daemon是 ibus 的守护程序,也是用户启动 ibus 守护程序、引擎和面板的启动程序。

    daemon是作为后台进程运行的计算机程序,而不是在交互式用户的直接控制下。

    ibus是一种智能输入总线。

    bus只是一组连接多个模块(处理器、内存、IO 设备)的电线。

    这exec

    然后我的问题是,exec env当我们已经从sh.

    该exec命令用指定的命令替换当前的 shell 进程。通常,当您运行命令时会生成(分叉)新进程,exec 命令不会生成新进程。相反,当前进程被新命令覆盖。换句话说,exec 命令代替当前 shell 执行,而不创建新进程。

    使用env- 如果您想在执行主程序之前修改程序的环境,您通常会编写一个脚本并在其结束时启动主程序。但是那时脚本没有必要留在内存中。因此,在这些情况下使用 exec 以便主程序可以替换母脚本。

    • exec 命令有什么可能的用途?
    • https://stackoverflow.com/questions/18351198/what-are-the-uses-of-the-exec-command-in-shell-scripts
    • https://unix.stackexchange.com/questions/265405/meaning-of-exec-env-command
    • 5
  3. SirGawain
    2022-01-09T01:03:01+08:002022-01-09T01:03:01+08:00

    我在我的 im-launch 启动项中添加了以下注释:“检查显示服务器类型、x11 或 wayland”

    • 0
  4. Swim Fan
    2022-02-05T02:22:43+08:002022-02-05T02:22:43+08:00

    我只有一件事要补充,@UnKNOWn 和他的评论暗示了这一点。

    IM-Launch可能意味着输入法。比如维基百科上提到的那个

    这也支持 Anit 的回答,他提到 ibus 未来的读者可以在 wiki 上找到

    简单来说,这似乎是一种检查要使用哪种键盘布局/语言的方法..但我不会引用我的话...从谷歌搜索来看,微软对这个主题有很多话要说。

    只是认为'IM'位是半重要的,上面的答案对我来说并不清楚..

    • 0

相关问题

  • 我可以记录恢复(取消休眠)需要多长时间吗?

  • Nautilus 在我杀死它之前不会显示我的桌面

  • bashrc 还是 bash_profile?

  • 如何在启动时运行脚本?

  • 遇到网络问题时,如何让 Empathy 重试连接

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve