如何从命令行将脚本添加到启动应用程序?

如何从命令行将脚本添加到启动应用程序?

我有一个 shell 脚本。我想将脚本配置为在启动时自动运行。我知道如何从 GUI 执行此操作。但我想从终端执行此操作。我该怎么做?

经过初步研究,我发现需要将文件移动到/etc/int.d/目录中。但此操作需要 sudo 权限。我想在没有超级用户权限的情况下执行此操作。

我还发现有一些文件包含~/.config/autostart/一些有关启动应用程序的设置。但我不知道如何编辑它们来实现这一点。

有人能告诉我实现这一目标的具体步骤吗?

答案1

如何从命令行设置启动启动器

正如您在问题中提到的那样,可以通过在登录时放置启动器来运行命令,~/.config/autostart因为启动器仅用于启动脚本,所以您只需要在创建的.desktop文件中使用“基本”桌面条目关键字:您至少需要的关键字/行:

[Desktop Entry]
Name=name
Exec=command
Type=Application

X-GNOME-Autostart-enabled=true如果您启用/禁用启动器的自动启动功能(X-GNOME-Autostart-enabled=true默认设置),则会自动添加(可选)行

有关必填字段的更多信息,您可以找到这里

示例脚本

要从命令行创建这样的启动器,您需要一个小脚本,该脚本将启动器的名称和要运行的命令作为参数。下面是此类脚本的一个示例。

如果我使用以下命令运行它:

python3 '/path/to/script' 'Test' 'gedit'

它会创建一个启动启动器,gedit在我登录时运行。
启动器也可在 Dash > 启动应用程序中看到:

在此处输入图片描述

剧本

#!/usr/bin/env python3
import os
import sys
home = os.environ["HOME"]

name = sys.argv[1]; command = sys.argv[2]

launcher = ["[Desktop Entry]", "Name=", "Exec=", "Type=Application", "X-GNOME-Autostart-enabled=true"]
dr = home+"/.config/autostart/"
if not os.path.exists(dr):
    os.makedirs(dr)
file = dr+name.lower()+".desktop"

if not os.path.exists(file):
    with open(file, "wt") as out:     
        for l in launcher:
            l = l+name if l == "Name=" else l
            l = l+command if l == "Exec=" else l
            out.write(l+"\n")
else:
    print("file exists, choose another name")

粘贴到空文件中,另存为set_startupscript.py,通过命令运行:

python3 /path/to/set_startupscript.py '<name>' '<command>'

它能做什么

  • 它在中创建一个基本的启动器(你不需要更多,运行一个脚本)~/.config/autostart,并将名称和命令作为参数。
  • 如果 中已存在同名的启动器~/.config/autostart,则会打印一条消息:

    file exists, choose another name
    

答案2

我找到了答案

cd 到~/.config/autostart/。如果你没有名为自动启动然后使用 mkdir autostart 创建一个同名的目录。

现在添加以下文件,名称为yourScript.sh.desktop

[Desktop Entry]
Type=Application
Exec="/Your/location/to/theScript/yourScript.sh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_IN]=AnyNameYouWish
Name=AnyNameYouWish
Comment[en_IN]=AnyComment
Comment=AnyComment

完毕!

相关内容