求解答: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,而环境变量依然没有设置。
有图有真相:

求解答啊。
由于新移植了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次,故改到此处了。望谅解。
http://topic.csdn.net/u/20110717/20/ef55e4a0-d4d7-4277-ab79-a36a592c5971.html?seed=990324576&r=74450930#r_74450930
由于不能连续自回帖3次,故改到此处了。望谅解。
作者: mxh20999 发布时间: 2011-07-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28