回答:
実行する必要があるスクリプトの種類によって異なります。サービスなどの場合は、upstartを使用する必要があります。ただし、ユーザースクリプトの場合、これらはgnomeによってセッションスクリプトとして起動する必要があります。[システム]> [設定]> [起動アプリケーション]をご覧ください。
補足説明として、ターミナルログインで実行するスクリプトが必要な場合は、ホームディレクトリの.bash_loginファイルに追加できます。
単純なコマンド(実行したままにする必要のないコマンド)では、次のようなUpstartジョブを使用できます。
start on startup
task
exec /path/to/command
これを.confファイル/etc/init(システムの起動時にrootとして実行する必要がある場合)または~/.config/upstart(ログイン時にユーザーとして実行する必要がある場合)に保存します。
system->pref->startup applicationsもにも見つかり/etc/init/ません~/.config/upstart。では、スタートアップアプリケーションはどこで定義されていますか?
                    1つのアプローチは、@ reboot cronタスクを追加することです。
crontab -eすると、cronを編集できます。次のような行を追加します。
@reboot /path/to/script
コンピュータが起動すると、そのスクリプトが実行されます。
@rebootキーワードは広く知られていないため、良いヒントです。
                    man 5 crontabと言い@rebootます。
                    rc.localはシステムがこの時点(PATHなど)でより多くのセットアップを行っているように見えるためです。何かを呼び出すことに一生懸命であること奇妙である後に、システムの起動...
                    コマンドを追加するのはどう/etc/rc.localですか?このファイルを編集するには、sudoアクセスを使用する必要があります。
sudo nano /etc/rc.local
chmod 755 rc.local追加#!/bin/bashする必要があることに注意してください。
                    を使用して起動時に(短命)1コマンドを実行するにsystemdは、タイプのsystemdユニットを使用できますOneShot。たとえば、次を/etc/systemd/system/foo.service含むものを作成します。
[Unit]
Description=Job that runs your user script
[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
次に実行します:
sudo systemctl daemon-reload
sudo systemctl enable foo.service
基本的に、これは典型的なUpstartジョブをsystemdに変換するだけです(Upstartユーザー向けのSystemdを参照)。
複数のExecStart行を使用して、同じサービスファイルから複数のコマンドを実行できます。
[Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure
コマンドは常にフルパスで指定する必要があります。コマンドが失敗した場合、残りは実行されません。-パスがsystemdにゼロ以外の終了ステータスを無視するように指示する前に(失敗と見なす代わりに)。
関連:
ユーザーセッションの場合は、~/.config/systemd代わりにsystemdユニットを作成できます。これは16.04以降で動作しますが、systemdを使用したUbuntuの以前のリリースでは動作しません(ユーザーセッションでUpstartが使用されているため)。ユーザーセッションユニットは、システムサービスと同じコマンドで制御できますが、--userオプションが追加されています:
systemctl --user daemon-reload
systemctl --user status foo.service
Upstartとは異なり、systemdはExec*シェルを介してコマンドを実行しないことに注意してください。いくつかの制限された変数展開と複数のコマンド(で区切られた;)自体を実行しますが、シェルのような構文に関する限りはそれについてです。より複雑なもの(リダイレクトやパイプなど)については、コマンドをsh -c '...'またはでラップしますbash -c '...'。
1寿命の長いデーモンとは対照的。
WantedByここで使用される、例えば、ときに起動しますmulti-user.target達しています。あなたは使用することができBefore、After、Requiresを参照してください、などman systemd.unit
                    RemainAfterExitは開始するサービスとその望ましい動作に依存します。たとえば、/bin/df -h<s> would </ s>にはが必要RemainAfterExit=noです。
                    dfそのニーズに固有のものはありませんRemainAfterExit=no。実行するたびにコマンドを繰り返し実行する場合を除きますsystemctl start foo。
                    コマンドを自動的に実行する方法はいくつかあります。
成り上がりのシステムは、それがディレクトリ内の設定を見つけ、そこからすべてのスクリプトを実行します/etc/init。これらのスクリプトは、システムの起動時に(またはシャットダウン要求などの特定のイベントに応じて)実行されるため、ユーザーと対話しないコマンドを実行する場所です。すべてのサーバーはこのメカニズムを使用して起動されます。  
http://upstart.ubuntu.com/getting-started.htmlのmanページで読みやすい紹介を見つけることができ、完全な詳細man 5 initをman 8 init提供します。
.gnomercホームディレクトリで指定されたシェルスクリプトは、GNOMEセッションにログインするたびに自動的にソースされます。そこに任意のコマンドを入れることができます。このスクリプトで設定した環境変数は、セッションで実行するすべてのプログラムで表示されます。  
.gnomercスクリプトが終了するまでセッションは開始されないことに注意してください。したがって、長時間実行されるプログラムを自動起動する&場合は、実行中のシェルから切り離すために、プログラムの呼び出しに追加する必要があります。
メニューオプションの[ システム]-> [設定]-> [起動アプリケーション]を使用すると、グラフィカルセッションの開始時に起動するアプリケーションを定義し(Ubuntuでかなり定義済み)、好みに合わせて追加または削除できます。これは、構文.gnomercを知る必要shがないことを除いて、スクリプトの目的と範囲とほぼ同じです(ただし、shプログラミング構成を使用することもできません)。
.gnomerc明らかにUnityをロードする前Startup Applicationsに実行され、 Unity をロードした後に実行されるようです。Unityのメニューバーにあるプログラムを実行する必要がありましたが、この場合は大きな違いがありました。
                    sudo update-rc.d myscript.sh defaultsここで、/ etc / init.d / myscript.shはスクリプトであり、起動時にも実行されます。
                    $HOME/.config/autostart
.desktop 起動時に実行されるファイルをここに置くことができます。.desktopファイルのサンプル例:
次の.desktopファイルを入れて$HOME/.config/autostart与えchmod +xます:
[Desktop Entry]
Type=Application
Exec="</path/to/script>"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Startup Script
ここに"</path/to/script>"あなたへのパスに置き換えられますscript.sh
(通常はすることをお勧めします/usr/local/binと言う直接コマンドで実行することができますので、それmyscriptに置き換え"</path/to/script>")。
サンプルの例script.sh:
#!/bin/bash
<commands to be executed>
exit
結果:
 .desktopファイルが起動され、$HOME/.config/autostartそこからスクリプトが実行されますExec=
したがって、起動時に目的のシェルスクリプトを実行できます。
簡単なことのために、スクリプトを保存する場所をポイントするコマンドをSystem-> Preferences-> Sessionsに追加できます。
あるいは、/ etc / init.d / rc.localに追加するか、より低レベルのものであればupstartジョブを作成できます。
詳細については、https://help.ubuntu.com/community/UbuntuBootupHowtoをご覧ください。
cron 上位の投票とは異なる回答が実装されましたこの回答は引き続き使用されますcronが、上位の投票済みの回答とは異なる方法を使用します。これはUbuntu 16.04以降で機能しますが、おそらくもっと早くサポートされるでしょう。cron16.04以降、コンピューターの起動時にジョブの実行に使用し始めただけです。
cron実行されますか?コメントでは、誰かが「いつ実行するのか」と尋ねました。syslog / journalctlで確認できます:
$ journalctl -b | grep cron
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (pidfile fd = 3)
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (Running @reboot jobs)
Jan 02 16:54:40 alien systemd[1]: Started Run anacron jobs.
Jan 02 16:54:40 alien anacron[949]: Anacron 2.3 started on 2018-01-02
Jan 02 16:54:40 alien anacron[949]: Normal exit (0 jobs run)
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[951]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[985]: (root) CMD (   /usr/local/bin/cron-reboot-cycle-grub-background)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session closed for user root
注意すべきことの1つはcron、ジョブの実行ステータスとジョブ実行のステータスをメールで送信できる@rebootためsleep、スクリプトにコマンドを入力しない限り、早期のネットワークマネージャーとメールが実行されないことです。
スクリプトをディレクトリに配置し/etc/cron.dます。
$ ll /etc/cron.d
total 44
drwxr-xr-x   2 root root  4096 Nov 26 19:53 ./
drwxr-xr-x 139 root root 12288 Dec 31 13:58 ../
-rw-r--r--   1 root root   244 Dec 28  2014 anacron
-rw-r--r--   1 root root   148 Feb 18  2017 cycle-grub-background
-rw-r--r--   1 root root   138 Mar  5  2017 display-auto-brightness
-rw-r--r--   1 root root   460 Nov 26 19:53 nvidia-hdmi-sound
-rw-r--r--   1 root root   102 Feb  9  2013 .placeholder
-rw-r--r--   1 root root   224 Nov 19  2016 touch-vmlinuz
-rw-r--r--   1 root root   700 Aug  5 11:15 turn-off-hyper-threading
以下に、各ブートを実行するためにセットアップしたスクリプトをいくつか示します。
$ cat /etc/cron.d/cycle-grub-background SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
@reboot   root    /usr/local/bin/cron-reboot-cycle-grub-background
$ cat /etc/cron.d/touch-vmlinuz
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    touch "/boot/vmlinuz-"`uname -r`
@rebootです。
                    crontab -evimのようなインターフェイスのために黒人の芸術の1つと考える人もいます。一方、この答えは、脳が特定の方法で配線されている人にアピールするかもしれません。全員が同じ金型から鋳造されるわけではありません。繰り返しになりますが、この回答にはすでに1つの反対票があります。
                    crontab -e、指示をグーグルで検索する必要があることが常にわかっている分、時間などのアスタリスク( "*")の記憶を表示します。私はまだ使用している/etc/cron.dと/etc/cron.daily私の選択に行きます。特に、ミラーリング/etc/udev/rules.dと/etc/systemd/system-sleepメソッドがあります。ちょうどいい感じのようです。
                    これにはupstartを使用する必要があります。Upstartは、自動的に開始されるUbuntuプロセスに使用されます。古いSystem-V init.dスクリプトのような拡張ソリューションです。また、スクリプトの開始に前提条件を設定することもできます(つまり、ネットワークを実行する必要がありますか?など)。