LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 832|回复: 4

我的用户环境变量实效该怎么办啊?

[复制链接]
发表于 2009-4-6 18:24:56 | 显示全部楼层 |阅读模式
各位兄弟,我在centos下安装了oracle,并且修改了.bash_profile文件,配置了oracle用户的环境变量。
环境变量内容如下
  1. # .bash_profile
  2. # Get the aliases and functions
  3. if [ -f ~/.bashrc ]; then
  4.         . ~/.bashrc
  5. fi
  6. # User specific environment and startup programs
  7. PATH=$PATH:$HOME/bin
  8. export PATH
  9. export ORACLE_BASE=/u01/app/oracle
  10. export ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1
  11. export ORACLE_SID=hrsystem
  12. export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
  13. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
  14. TMP=/tmp; export TMP
  15. TMPDIR=$TMP; export TMPDIR
  16. ORACLE_BASE=/home/oracle; export ORACLE_BASE
  17. ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
  18. ORACLE_SID=orcl; export ORACLE_SID
  19. ORACLE_TERM=xterm; export ORACLE_TERM
  20. PATH=/usr/sbin:$PATH; export PATH
  21. PATH=$ORACLE_HOME/bin:$PATH; export PATH
  22. LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
  23. CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
  24. if [ $USER = "oracle" ]; then
  25. if [ $SHELL = "/bin/ksh" ]; then
  26. ulimit -p 16384
  27. ulimit -n 65536
  28. else
  29. ulimit -u 16384 -n 65536
  30. fi
  31. fi
  32. ~
复制代码
现在是,每当我切换到oracle这个用户时,无法使用配置好的环境变量,必须输入source .bash_profile后,才可以使用,请问大家有没有知道这是为什么?
 楼主| 发表于 2009-4-6 18:39:05 | 显示全部楼层
刚才我又看了一下oracle这个用户的环境变量,上面配置的那些ORACLE_HOME之类的根本就没生效。但是我执行一次source .bash_profile之后,该有的环境变量就出现了,真的是很奇怪。我记得linux用户登录的时候会自动去执行.bash_profile这个文件,但是现在看,他似乎没有自动执行。有大虾能帮助解决一下吗,谢拉。
回复 支持 反对

使用道具 举报

发表于 2009-4-6 19:38:52 | 显示全部楼层
直接放到 .bashrc 总可以了吧?
回复 支持 反对

使用道具 举报

发表于 2009-4-6 21:32:05 | 显示全部楼层

  1. 1.2.2.2. Bash 启动文件
  2. 启动文件是当Bash启动时候读取并且执行的脚本。下面的子章节部分描述了启动shell的不同方法,和因此启动读取的文件。

  3. 1.2.2.2.1. 以交互登陆shell调用,或者使用'--login'
  4. 交互意味着你可以输入命令。Shell没有运行因为一个脚本被激活了。一个登陆shell就是在系统验证完了你输入的用户名和密码后得到shell。

  5. 读取的文件:

  6. /etc/profile

  7. ~/.bash_profile, ~/.bash_login or ~/.profile: 读取第一个存在的可读取的文件

  8. ~/.bash_logout 登出的时候。

  9. 错误消息将会显示如果配置文件存在但是不能读取。一个文件不存在,Bash将搜索下一个。

  10. 1.2.2.2.2. 以一个交互非登陆shell调用
  11. 一个非登陆shell就是不需要进行系统的认证。比如,通过一个图标打开一个终端,或者一个菜单项目,那样就是非登陆shell

  12. 读取的文件:

  13. ~/.bashrc

  14. 此文件通常指向 ~/.bash_profile:

  15. if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

  16. 参见 第 7 章 条件语句 if 结构以得到更多信息。

  17. 1.2.2.2.3. 非交互调用
  18. 所有脚本使用非交互shell。他们是被编制出来完成特定任务且不能完成其他工作。

  19. 读取的文件:

  20. 由变量 BASH_ENV定义

  21. PATH 不是用来搜索文件的,所以如果你想使用它,最好给出全部路径名和文件名来。

  22. 1.2.2.2.4. 以sh命令调用
  23. Bash尝试sh 的相似行为同时也遵循POSIX标准。

  24. 读取的文件:

  25. /etc/profile

  26. ~/.profile

  27. 当以交互方式调用时,环境变量 ENV 能指出额外的启动信息
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-4-6 23:18:11 | 显示全部楼层
你要么写到.bashrc,如果你硬是要写到.bash_profile,请使用su - oracle或su -l oracle而不是su oracle来切换到oracle用户。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表