![需要在启动或登录时以 root 身份运行 .sh](https://linux22.com/image/1113735/%E9%9C%80%E8%A6%81%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%88%96%E7%99%BB%E5%BD%95%E6%97%B6%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%20.sh.png)
仍是 Linux 新手,运行的是 ubuntu 12.10
我有一根无线棒 (ae2500),它存在一些已知问题,使用 ndiswrapper 可以部分解决这些问题。但是,要使用它,我必须在每次重新启动时运行相同的脚本,从而有效地卸载并重新安装驱动程序。我制作了一个 .sh 文件,每次运行它以方便操作,但我每次都必须执行 sudo login。
我正在寻找三种解决方案,尽管并非所有解决方案都对解决这个特定问题都是必要的,但出于学习目的,我仍然希望了解所有解决方案。
- 在启动时运行脚本或 file.sh(以及其他程序)
- 使用 root 权限自动运行脚本或 file.sh
- 使安装永久化,以便不必每次都经历该过程。
任何能帮助我解决此问题的其他信息(包括简化我的命令)或常识,都将不胜感激。以下是文件的内容。我几乎按照我输入的方式进行了操作。
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 脚本(或任何其他脚本)在启动时运行,您需要;
- 将您的脚本放在易于访问的地方(例如您的桌面)。
- 确保右键单击脚本并转到属性,在“权限”选项卡中显示“执行”;“任何人”。
打开 leafpad 或任何其他文本编辑器并输入:
[Desktop Entry] Name=yourScriptName Exec=/usr/bin/yourScript.sh Type=Application Terminal=false
- 按 Ctrl + S 并填写名称“scriptName.desktop”,然后将其保存在桌面上。
- 使用 Ctrl + Alt + T 打开终端。
类型:
cd ~/Desktop
~ 表示家,现在应该是这样的:
userName@computerName:~/Desktop$
然后:
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,它对我来说效果很好,
我希望这是一个有用且清晰的解释:)。
韦塞尔