我读过关于这个问题的各种问题,how to run script at startup
但我不太清楚它们之间有什么区别,也不太清楚在没有 GUI 的情况下真正正确的方法是什么。
/etc/rc.local
- cron 作业使用
@reboot
~/.profile
/.bash_profile
/.bash_login
我需要在启动时运行的示例
apt-get update
- 设置一些权限
- 设置显示亮度
- 打开数字锁定
- 设置触摸板
- 运行一些应用程序
sudo
以 root 身份运行一些脚本(即使主脚本已经以 root 身份执行,我是否应该调用它们?)- 无需 root 权限即可运行一些脚本
如果有一个脚本可以在一个文件中处理所有这些事情就好了。如何正确执行?
答案1
~/.profile
、/.bash_profile
和/.bash_login
更适合定义环境变量和设置环境,而不是运行脚本。我不推荐这些。
/etc/rc.local
可用于此目的,但请记住它将在 GUI 启动之前启动。除非它是仅向 GUI 发送通知的脚本。请注意,您需要以/etc/rc.local
格式调用脚本/full/path/to/script &
(&
以避免阻止执行您可能在那里执行的其他脚本)。您还需要export DISPLAY=:0
脚本本身或中的变量/etc/rc.local
。需要 GUI 的应用程序将需要此变量存在。与的想法相同cron job using @reboot
。
如果您想在 GUI 登录时运行脚本,正确的方法是在文件夹中为每个脚本创建.desktop
文件~/.config/autostart/
。您可以手动执行此操作,也可以使用 Startup Applications 应用程序为您执行完全相同的操作。只需打开 Unity Dash 并输入“Startup Applications”
示例概述
apt-get update
不需要 GUI,只需要网络。/etc/rc.local
这个就够了。set some permissions
,这也不需要 GUI,只需使用/etc/rc.local
set display brightness
也不需要 GUI,但可能需要 root 权限。如果您想在登录前更改它,则需要写入特殊文件。请参阅我的另一篇帖子关于这个问题turn numlock on
可能也不需要 GUIsetup touchpad
取决于你的方法,可能需要也可能不需要 GUIrun some apps
如果它们是 GUI 应用程序,则需要从我上面描述的启动应用程序启动。run some scripts as root
您可以使用/etc/rc.local
或cron
来实现这些。出于多种原因,以 root 身份运行 GUI 应用程序是个坏主意,因此请避免这样做。run some scripts without root
使用启动应用程序方法。