一開始我找不到 ubuntu 的 rc.local 檔案,我記得預設的 rc.local 是存在 /etc/rc.d/rc.local 系統透過 S99rc.local 去啟動並執行該檔案中所設定的指令.但在 ubuntu 是存放在 /etc/rc.local .恩!!!我們來看看 rc.local 以及其他 script 被執行的時機為何時.
rc.local
當電腦開啟至 Linux 系統下首先 init 會執行 run-level 目錄下 /etc/rc.0.d ~ /etc/rc6.d 的 scripts ,不過這邊都只是連結,主要都是連結到 /etc/init.d 目錄下,所以真正的 script 是存在 /etc/init.d 下的,其中的名稱都是以 S 或 K 開頭再加上一串數字, S 代表在這個 runlevel 是要開啟這個 daemon ,而 K 代表在這個 runlevel 是要關閉的,數字則代表他們執行的先後順序.
最後你會發現 runlevel 2,3,4,5 目錄下皆有 S99rc.local 並且指向 ../rc.local (ex:/etc/rc5.d/S99local -> ../rc.local) ,所以系統最後都會在去 執行 /etc/rc.d/rc.local 這支 script.
其他 login 會被執行的 script
- login system 會用到的 shell
- /etc/profile
- /etc/profile.d
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
- logout system 會用到的 shell
~/.bash_logout
但 rc.local 只能執行文字介面的程式,因為 rc.local 他在執行程式時,我們還沒登入 x-window 所以要自動執行 GUI 的程式可以透過 XDG(X DESKTOP GROUP) 的方式來啟動 https://benjr.tw/1242 ,或是使用前面所提到的 login system 會使用到的 script file.
Ubuntu 和 RHEL 不同的一點是他預設的 shell 為 dash 而不是 RHEL 常用的 bash 我們可以透過下列的方式進行修改.
$sudo rm /bin/sh $sudo ln -s /bin/bash /bin/sh
- 執行 sudo dpkg-reconfigure dash 並選擇 "no"
- 重新進行連接
參考網頁 http://www.pyoix.com/a/1122.html