需要在启动或登录时以 root 身份运行 .sh

需要在启动或登录时以 root 身份运行 .sh

仍是 Linux 新手,运行的是 ubuntu 12.10

我有一根无线棒 (ae2500),它存在一些已知问题,使用 ndiswrapper 可以部分解决这些问题。但是,要使用它,我必须在每次重新启动时运行相同的脚本,从而有效地卸载并重新安装驱动程序。我制作了一个 .sh 文件,每次运行它以方便操作,但我每次都必须执行 sudo login。

我正在寻找三种解决方案,尽管并非所有解决方案都对解决这个特定问题都是必要的,但出于学习目的,我仍然希望了解所有解决方案。

  1. 在启动时运行脚本或 file.sh(以及其他程序)
  2. 使用 root 权限自动运行脚本或 file.sh
  3. 使安装永久化,以便不必每次都经历该过程。

任何能帮助我解决此问题的其他信息(包括简化我的命令)或常识,都将不胜感激。以下是文件的内容。我几乎按照我输入的方式进行了操作。

cd ~/ndiswrapper-1.58rc1

sudo modprobe -rf ndiswrapper
sudo rm /etc/modprobe.d/ndiswrapper.conf
sudo rm -r /etc/ndiswrapper/*
sudo depmod -a

sudo make uninstall
sudo make
sudo make install
sudo ndiswrapper -i bcmwlhigh5.inf
ndiswrapper -l
sudo modprobe ndiswrapper

答案1

为了让文件在启动时执行,你基本上需要把 .desktop 放在 /etc/xdg/autostart/

以下是如何从命令行为您的文件设置 .desktop:

sudo mv file.sh /usr/bin

这会将 shell 文件路径移动到/usr/bin

然后转到

/usr/share/applications

接下来,您要创建一个 .desktop 文件,因此您输入

sudo -H gedit file.desktop & 

& 表示您仍然可以使用终端,但文件保持打开状态。如果您的记忆力和我一样好,那么这个功能就很方便了。

在 gedit 中写入:

[Desktop Entry]
Name=myfileName
Exec=/usr/bin/file.sh
Type=Application
Terminal=false

如果你愿意,现在就可以关闭它。如果你喜欢,还可以添加图标来icon=path/to/icon让它更有趣。

现在要让此文件在启动时运行,您需要将其副本保存到

/etc/xdg/autostart/

只要脚本(myfile.sh)已经可以运行,那么这应该就可以了。

答案2

您可以尝试将 file.sh 放入 /etc/init.d/ 并使用 update-rc.d

update-rc.d file.sh defaults

答案3

要在登录时运行它(我使用的是 12.04,因此这可能略有不同),只需单击最右上角的菜单(带有关机选项),然后单击启动应用程序...

然后单击Add,为其命名并给出描述,然后浏览到 bash 脚本的位置。注销,然后重新打开,它就应该可以工作了。

如果您以这种方式执行此操作,我建议在脚本中更改为,sudo以便gksudo它在漂亮的 GUI 中请求 sudo 权限,而不是仅仅坐在终端上请求它。

答案4

[这是magpie的回答和我自己的经历的结合。]

要获取 .sh 脚本(或任何其他脚本)在启动时运行,您需要;

  1. 将您的脚本放在易于访问的地方(例如您的桌面)。
  2. 确保右键单击脚本并转到属性,在“权限”选项卡中显示“执行”;“任何人”。
  3. 打开 leafpad 或任何其他文本编辑器并输入:

    [Desktop Entry]
    Name=yourScriptName
    Exec=/usr/bin/yourScript.sh
    Type=Application
    Terminal=false
    
  4. 按 Ctrl + S 并填写名称“scriptName.desktop”,然后将其保存在桌面上。
  5. 使用 Ctrl + Alt + T 打开终端。
  6. 类型:

    cd ~/Desktop
    

    ~ 表示家,现在应该是这样的:

    userName@computerName:~/Desktop$
    
  7. 然后:

    sudo mv yourScript.sh /usr/bin
    

(通常建议将其放入/usr/local/bin以便可以直接通过命令yourScript.sh而不是“/path/to/script”来执行)。

    sudo cp scriptName.desktop /usr/share/applications

    sudo mv scritptName.desktop /etc/xdg/autostart

就是这样!

我使用的是 lubuntu 17.04,它对我来说效果很好,
我希望这是一个有用且清晰的解释:)。

韦塞尔

相关内容