序言:任何事情都一样,原理弄清楚了,所有的问题将显得不再神秘。
学计算机的人都晓得,在任何同一时刻,计算机只能执行一条指令,并且都是次序往下执行的(除非碰到跳转指令)。
Linux的进程启动都是按照启动脚本里的指令进行的,主要有两类:init
和bash.init是所有脚本的最顶端,首先被执行,而bash通常是登录shell的时侯就会被调用。
不同的文件系统具体的启动脚本文件名称是不一样的。以我使用的文件系统(yaffs)为例linux 删除文件夹,/etc/init.d/rcS
作为init
的脚本,假如你想开机时步入自己的应用程序,则在rcS上面写入就可以。例如我想启动/usr/qtopia/chip则在上面写入/usr/qtopia/chip–qws就可以。
/etc/init.d/profile作为bash的脚本linux 开机启动应用程序,在这个脚本里的指令开机时不会被执行,并且你步入shell
状态时,才会被调用,通常来说bash脚本多数拿来储存环境变量,记住,每一次步入shell
还会调用一次bash脚本。
来瞧瞧我剖析一个解释器,在/usr/qtopia里有一个qt
程序,不采用自启动的形式,而是借助终端输入(步入终端就意味着步入shell)打开,这时侯没问题,程序正常被打开,这说明里我的qt
库lib的环境变量设置没问题。
并且当我采用自启动的方法,即在/etc/init/rcS里加入/usr/qtopia/chip–qws时却提示error
whileloadingshareqtlib.so.4````````为何呢?
缘由是这样的:我的环境变量放到/etc/profile而程序执行指令置于/etc/init.d/rcS
,这儿都会出现一个问题,rcS最先被执行而profile还没被执行,这样很显著找不到lib
了嘛,回头看终端输入启动linux安装教程,为何就找到lib呢?很简单,你打开终端时,bash
早已被调用。这样linux 开机启动应用程序,执行的次序变为首先执行/etc/profile之后才执行你的指令。
注:ubuntu系统的bash脚本是~/.bashrc或则/etc/bashrc