+ -
当前位置:首页 → 问答吧 → 诡异的问题:关于linux开机运行脚本的疑问

诡异的问题:关于linux开机运行脚本的疑问

时间:2011-07-17

来源:互联网

刚移植了一下linux系统,基于友善之臂的s3c2440平台。先交代一下环境:
编译器:arm-linux-gcc 4.1.2(openmoko制作)
kernel:linux-2.6.32.43
busybox:BusyBox 1.18.5

内核和文件系统均正常启动,测试程序也正常运行。

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

Perl code

 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之后,环境变量生效。

[mxh2440]# echo $T_ROOT
/opt/tslib

好了,诡异的现象开始了。
我将这段脚本写入/etc/init.d/rcS中,
Perl code

#!/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
[color=#FF0000]source /opt/setenv.sh [/color]




reboot重启之后,查看echo $T_ROOT,居然没有生效。

于是我试着将
Perl code

 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中:
Perl code

#!/bin/sh

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

[color=#FF0000] 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[/color]

#
#    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





再重启,发现涛声依旧。这是神马情况呢?大侠帮忙解惑!

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

本想在代码区加红色颜色区分,但是看看一楼,貌似不能加,还整错了。这里先修正一下。
也就是在/etc/init.d/rcS的最后一句我添加了:
source /opt/setenv.sh
发现不能正常实现开机自动执行。
但是我若在终端里手动执行source /opt/setenv.sh的时候,查看环境变量echo $T_ROOT是正常的。

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

顶一下先。

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

没讲述清楚?

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

热门下载

更多