+ -
当前位置:首页 → 问答吧 → 求解答:linux开机自动运行脚本的诡异问题

求解答:linux开机自动运行脚本的诡异问题

时间:2011-07-17

来源:互联网

那再改一下,重新描述。

由于新移植了tslib,想让系统开机自动设置tslib的相关环境变量,写了一个脚本:
#vi setenv.sh

export T_ROOT=/opt/tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=opt/tslib/pointercal
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH

并添加了可执行权限:
#chmod +x setenv.sh

经测试,执行source setenv.sh之后,环境变量生效。

# echo $T_ROOT
显示如下:
/opt/tslib

好了,诡异的现象开始了。
===============================================================================================
我将这段脚本写入/etc/init.d/rcS中,即在其最后添加下面红色的那一句。
#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var

/bin/mkdir -p /var/log

/bin/hostname -F /etc/sysconfig/HOSTNAME
source /opt/setenv.sh

reboot之后,查看echo $T_ROOT,没有生效。

于是我试着将
export T_ROOT=/opt/tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=opt/tslib/pointercal
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH
直接加入到/etc/init.d/rcS中,如下所示:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

 export T_ROOT=/opt/tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=opt/tslib/pointercal
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH

#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var

/bin/mkdir -p /var/log

/bin/hostname -F /etc/sysconfig/HOSTNAME

再重启,还是没有生效。什么原因呢?

为了表明上面的脚本是执行的了,我又在/etc/init.d/rcS中的最后面加入了一句测试语句。
./opt/test

其中,opt/test是我写的hello world测试程序。reboot之后,在终端上显示hello world,而环境变量依然没有设置。

有图有真相:


求解答啊。

作者: mxh20999   发布时间: 2011-07-17

原帖地址:
http://topic.csdn.net/u/20110717/20/ef55e4a0-d4d7-4277-ab79-a36a592c5971.html?seed=990324576&r=74450930#r_74450930

由于不能连续自回帖3次,故改到此处了。望谅解。

作者: mxh20999   发布时间: 2011-07-17

热门下载

更多