以Fedora 13为例,用户登录时,bash首先自动执行系统管理员建立的全局登录script:/ect/profile。然后bash在用户起始目录下查找各自用户的配置文件。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
下面以/etc/profile文件为例:
在/etc/profile文件的末尾添加需要开机自启动程序的完整路径(如果该路径没有在环境变量中),并添加一个“&”以示表示在后台运行,以避免一些错误。
如,我需要在linux开机自动启动的时候运行终端程序,则在/etc/profile文件末尾添加如下内容:
gnome-terminal &
那么开机的时候就可以自动运行终端了。
还可以在各个用户目录下的.bash_profile 和.bashrc等脚本文件中添加相应语句使开启自动运行。
如,我们可以在/root/.bashrc中最后添加下面一句:
cd /home/plg
即可以使系统开机后当前路径转到/home/plg.
以上原理适用与图形和字符界面,同样使用与ubuntu系列的linux 系统。
另外,对于嵌入式linux来说,由于大多使用了busybox构建的文件系统,所有在脚本文件的修改上会有一些差别。
下面是我以前写的一篇文章做参考:
本机环境:
基于Mini2440的linux2.6.32内核
qte的库文件在/mini2440下
qte应用程序在/home/plg目录下。
如果想在开机后直接运行自己编的qt程序,只需把/etc/init.d/rcS中的最下面加上
/home/plg/run.sh & #添加一个执行脚本行,这个脚本因为在
#/etc/init.d/rcS中,所以会被自动运行(注意后面最好有个&,使他在后台执#行,否则无法通过串口操作控制台)
如图:
然后在/home/plg目录下建立一个run.sh文件,内容如下:
export QTDIR=/mini2440
export T_ROOT=/tslib
export PATH=$QTDIR/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
我的整个run.sh文件内容如下:
#!/bin/sh
export QTDIR=/mini2440
export T_ROOT=/tslib
export PATH=$QTDIR/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
#export QWS_KEYBOARD=TTY:/dev/tty1
/home/plg/spreadsheet –qws//在这里添加自己的应用程序完成路径
重启之后,就可以看见自己添加的qte程序开机自动运行,并且我们可以正常使用触屏。
2011.7.13
Pstary