在linux下,java程序调用脚本load.sh出现command not found

cck1112 2010-10-26 10:03:57
load.sh内容如下:
folderpath='/db2data/sqlldr/data/'
curdate=$(date +%Y%m%d)
exportpath=$folderpath$curdate
export PATH=/usr/java/jdk1.5.0_16/bin:/opt/ibm/db2/V9.1/bin:/usr/java/jdk1.5.0_16/jre/lib
echo $PATH
db2 connect to testdb user test using test
db2 load client from $exportpath/test.ixf of ixf modified by forcein messages /db2data/1.log insert into testdb.test

在root用户下手动执行load.sh成功,但是在test用户下java程序调用load.sh有的时候是成功的,但是有的时候是失败的并且提示 db2:command not found
请问这是什么原因,或者说解决方法是什么
...全文
982 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhc8501 2011-11-17
  • 打赏
  • 举报
回复
应该是用户权限的设置有问题吧,root权限下的执行文件是不能由别的普通用户执行的。不知道对不对,我以前使用liux命令的时候碰到过这样的问题。
cck1112 2010-11-08
  • 打赏
  • 举报
回复
用户不是root,但是在root用户下对profile设置之后不是可以对所有用户都起作用吗?
bayougeng 2010-11-06
  • 打赏
  • 举报
回复
你重启电脑以后用的还是root用户登录么?
登录以后直接echo $PATH就是上面的那个结果么?
这个时候db2命令执行不了么?
cck1112 2010-11-05
  • 打赏
  • 举报
回复
echo $PATH 打印出来信息如下:
/usr/java/jdk1.5.0_16/bin:/opt/ibm/db2/V9.1/bin:/usr/java/jdk1.5.0_16/jre/lib:/usr/java/jdk1.5.0_16/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/bin:/root/bin

有包含:/opt/ibm/db2/V9.1/bin
bayougeng 2010-11-04
  • 打赏
  • 举报
回复
你在运行db2命令之前,先echo $PATH看看。或者which db2
cck1112 2010-11-02
  • 打赏
  • 举报
回复
root用户下,在profile文件中添加 export PATH=$PATH:/opt/ibm/db2/V9.1/bin
并执行 source profile使其生效
然后执行loadall.sh导数脚本成功。
但是当我重启电脑之后,又出现 db2:command not found
bayougeng 2010-10-26
  • 打赏
  • 举报
回复
这是完整的shell脚本么?怎么连脚本解释器的声明都没有啊。
你说的这个现象,几乎可以肯定是环境变量的问题。
检查一下启动java时的系统变量path。这个原因很容易找的。
bayougeng 2010-10-26
  • 打赏
  • 举报
回复
/opt/ibm/db2/V9.1
这个是db2的安装目录,那么你可以这样来启动db2命令:
/opt/ibm/db2/V9.1/bin/db2 xxxx
你可以把完整的shell脚本和java程序贴上来看看
最好把正确的输出和错误的输出也贴上来
cck1112 2010-10-26
  • 打赏
  • 举报
回复
:/opt/ibm/db2/V9.1/bin 便是db2的安装目录
Zh_java_2009 2010-10-26
  • 打赏
  • 举报
回复
For example:
execute the following command

source /etc/profile
source /home/oracle/.bash_profile

.bash_profile和profile就是环境变量的配置文件 这个命令能让他们生效
Zh_java_2009 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bayougeng 的回复:]
这是完整的shell脚本么?怎么连脚本解释器的声明都没有啊。
你说的这个现象,几乎可以肯定是环境变量的问题。
检查一下启动java时的系统变量path。这个原因很容易找的。
[/Quote]
顶 沙发的回答永远都是如此给力~!!!!
顺便再提醒一下环境变量生效没有?
cck1112 2010-10-26
  • 打赏
  • 举报
回复
db2的完整路径是什么意思
不好意思我才接触db2跟linux
是不是说要到db2安装目录的bin目录下
bayougeng 2010-10-26
  • 打赏
  • 举报
回复
你试试把db2的完整路径加上
cck1112 2010-10-26
  • 打赏
  • 举报
回复
麻烦再看一下这个,这个也是手动可以执行,但是到java程序里边有的时候成功,有的时候失败
cd /web/bras/WEB-INF/importAllModel
folderpath='/db2data/sqlldr/data/'
curdate=$(date +%Y%m%d)
exportpath=$folderpath$curdate
#PATH=$PATH:/usr/java/jdk1.5.0_16/bin:/opt/ibm/db2/V9.1/bin:/usr/java/jdk1.5.0_16/jre/lib:/usr/java/jdk1.5.0_16/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/bin:/root/bin
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
echo $PATH
db2 connect to bras user bras using bras

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧