linux环境变量问题

装完oracle以后使用sqlplus准备登陆进去,可是却提示command not found,看了看,小CASE指定是环境变量问题,我用root用户修改/home/oracle/.bash_profile 这个oracle用户所对应的文件就可以了。然后我就开始动手去加了!加完以后内容如下:

#User specific environment and startup programs
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db1
export ORACLE_SID=yzora
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH
写完了,保存退出出VI编辑器,root用户执行source /home/oracle/.bash_profile,准备开始我的oracle之旅了。

     兴致匆匆的su - oracle用户,登陆进去以后执行命令 sqlplus /nolog 奇怪的事情发生了,还是现实command not found 还是不好用,这是怎么回事呢?可能没生效?我又执行了下 source /home/oracle/.bash_profile文件,在打sqlplus /nolog用户,可以正常登陆到sql当中了。。可以使用了。。但是就想了,是不是每次登陆都得执行下source呢?我又切换回root用户,然后又切换回oracle用户,执行sqlplus命令,还是不好用。这就怪了!怎么回事呢!

    我这个问题研究了好长时间,突然脑子里闪出来一个念头,是不是我在/home/oracle/.bash_profiel写的PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
这段当中的$ORACLE_HOME/bin有问题呢?把这个变量改成绝对路径来表示PATH=$PATH:$HOME/bin:/u01/app/oracle/product/10.2.0/db1/bin
更改以后保存退出 source /home/oracle/.bash_profile,切换到oracle用户打命令sqlplus /nolog命令,正常使用。哈哈,难道成功了吗?为了保险起见,重新启动系统。启动以后登陆到root用户,然后再切换到oracle用户执行sqlplus /nolog,可以正常使用问题解决!

故障分析:系统启动以后,切换到oracle用户时自动执行环境变量/home/oracle/.bash_profile文件,执行的时候也是一条一条顺序执行的,执行第一条是PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin这事第一条,大家可以看到我$PATH和$HOME/bin都是系统自带的,而$ORACLE_HOME/bin这个变量却是我在下边定义的。当系统执行这个脚本走到这条的时候,前两条环境变量都能识别,可是在走$ORACLE_HOME/bin却不能识别,因为系统找不到这个变量的具体路径,所以继续往下执行脚本。等到执行到最后虽然能够识别$ORACLE_HOME/bin路径的位置但是却不能生效,当执行source .bash_profile时相当于把这个文件执行了两遍,当然就可以认到了$ORACLE_HOME/bin这个路径。环境变量也就生效了!这就像C语言一样,变量需要先定义。。在C语言这样的错误就要报错了,但是环境变量中虽然没有报错。但是也没有生效,所以总结一句话。变量需要先定义,然后才能执行在系统中!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值