Chinaunix
标题:
求助,运行.profile文件时报错
[打印本页]
作者:
silverdust
时间:
2006-01-10 13:26
标题:
求助,运行.profile文件时报错
shell程序里要用到.profile的变量
所以在shell的最前面加上语句
. $HOME/.profile
在前端执行的时候没有问题,但是将shell放在后台执行的时候
nohup sh dd.sh&
程序报错,前端的报错信息是
fjdcc3:/home/xxpt/xxpt/usr/zhout>nohup sh dd.sh&
[1] 7831
fjdcc3:/home/xxpt/xxpt/usr/zhout>Sending output to nohup.out
[1] + Stopped (tty output) nohup sh dd.sh&
nohup.out文件里只有一句话“Not a termina”
请问是什么原因?
环境:HPUX
shell 程序代码如下
. $HOME/.profile
echo "success"
profile文件内容如下
# @(#)B.11.11_LR
# Default user .profile file (/usr/bin/sh initialization).
# Set up the terminal:
if [ "$TERM" = "" ]
then
eval ` tset -s -Q -m '
hp' `
else
eval ` tset -s -Q `
fi
stty erase "^H" kill "^U" intr "^C" eof "^D"
stty hupcl ixon ixoff
tabs
# Set up the search paths:
PATH=$PATH:.
# Set up the shell environment:
set -u
trap "echo 'logout'" 0
# Set up the shell variables:
EDITOR=vi
export EDITOR
#Set up informix for xxpt
TERM=vt100
INFORMIXDIR=/home/informix
INFORMIXSERVER=xxptdbser
ONCONFIG=onconfig.xxpt
PATH=$PATH
INFORMIXDIR/bin
LD_LIBRARY_PATH=$INFORMIXDIR/lib/esql
INFORMIXDIR/lib
HOME/cardmis/lib
HOME/cardmis/lib/esql
export INFORMIXDIR INFORMIXSERVER ONCONFIG PATH LD_LIBRARY_PATH TERM
DBDATE=Y4MD
export DBDATE
LANG=en_US.iso88591;
#LANG=en_US.8859-1
export LANG
DB_LOCALE=en_US.8859-1
export DB_LOCALE
CLIENT_LOCALE=en_US.8859-1
export CLIENT_LOCALE
case $LOGNAME in # include command number in prompt
root) PS1="!# " ;;
*)PS1=`hostname`'
PWD>' ;;
esac
export PS1
#---------------------xxpt evn --------------------#
ZHDATAHOME=/home/moia/data/load;export ZHDATAHOME
FLATHOME=$HOME/xxpt;export FLATHOME
DATAHOME=/home/xxpt/xxpt; export DATAHOME
FLATDB=ccb_dm;export FLATDB
CONFIGDIR=$FLATHOME/ini;export CONFIGDIR
PATH=$PATH
FLATHOME/bin
FLATHOME/tools
FLATHOME/shl;export PATH
PATH=$PATH
FLATHOME/ini/src
FLATHOME/src/dm_nbk;export PATH
WRKDATE_FILE=$FLATHOME/etc/wrkdate;export WRKDATE_FILE
RDSQL_FILE=$FLATHOME/log/rdsql.log;export RDSQL_FILE
LOAD_COUNT=10
LOAD_CONFIG_FILE=$HOME/bin/loadtablecfg.ini
export LOAD_COUNT LOAD_CONFIG_FILE
RUNMODE=INCREMENT
#RUNMODE=FULL
export RUNMODE
LD_BRARY_PATH=$HOME/lib;
export LD_BRARY_PATH
[
本帖最后由 silverdust 于 2006-1-10 13:49 编辑
]
作者:
大蚂蚁
时间:
2006-01-10 13:32
没看懂,看报错好象是没有找到标准输出,不过这些环境变量都可以从父shell中继承过来的,为何要再执行一遍?
作者:
waker
时间:
2006-01-10 13:36
TERM='' nohup sh dd.sh&
作者:
silverdust
时间:
2006-01-10 13:58
楼上的大哥们能不能说清楚一点。
因为有很多变量是直接在.profile中定义的,我怕程序放在后台跑得时候,取不到profile里的变量,所以想先执行一下。
环境我写错了,应该是hpux
是不是hp下面不用做这步操作?
作者:
大蚂蚁
时间:
2006-01-10 14:00
只要你在程序中不改变那些变量,子shell都会继承父shell的所有环境变量的
作者:
silverdust
时间:
2006-01-10 14:19
是嘛?因为原来在aix机器上跑程序的时候,有些程序放在后台跑的话,就取不到环境变量。
难道hp的不同?
不过,这样写了之后前端运行是没有报错的,所以肯定还是哪里设置的不对,放在后台就报错了
作者:
ghostwx
时间:
2006-01-10 14:22
if [ "$TERM" = "" ]
then
eval ` tset -s -Q -m '
hp' `
else
eval ` tset -s -Q `
fi
是不是tset的问题,你可以去掉看看
作者:
大蚂蚁
时间:
2006-01-10 14:24
记得HP的机器好象都要设置TREM=vt100
作者:
waker
时间:
2006-01-10 14:26
.profile就是给登录shell用的,放后台就把# Set up the terminal:那部分拿掉
作者:
silverdust
时间:
2006-01-10 14:48
因为程序是要放在crontab里定时启动的,本身的用户并不是root,所以调用程序的时候是没法执行.profile文件的
作者:
waker
时间:
2006-01-10 14:52
看不明白,直接把.profile中不需要的部分拿掉,其它内容直接放你的脚本里面
作者:
ghostwx
时间:
2006-01-10 15:15
同意waker, $HOME/.profile是为了用户登陆时使用,建议lz将有用的部分提出来,创建一个新文件。在你的dd.sh 中 source你的薪文件
作者:
silverdust
时间:
2006-01-10 20:44
楼上说的方法我也知道,只是觉得太麻烦。
因为原来用执行profile的方式成功过,所以现在想再用,看来是没指望了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2