启动时运行脚本的差异

启动时运行脚本的差异

我读过关于这个问题的各种问题,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可能也不需要 GUI
  • setup touchpad取决于你的方法,可能需要也可能不需要 GUI
  • run some apps如果它们是 GUI 应用程序,则需要从我上面描述的启动应用程序启动。
  • run some scripts as root 您可以使用/etc/rc.localcron来实现这些。出于多种原因,以 root 身份运行 GUI 应用程序是个坏主意,因此请避免这样做。
  • run some scripts without root使用启动应用程序方法。

相关内容