红联Linux门户
Linux帮助

Linux下Oracle环境变量无效问题解决

发布时间:2016-01-15 15:55:31来源:linux网站作者:chunglin

今天在Linux下维护Oracle数据库时,查看监听的状态,执行:

#lsnrctl status


报错:-bash:lsnrctl:command not found。以前并不会这样,仔细想了一下,问题找到了,我是以root远程登录到服务器上,维护oracle时,直接 su oracle,这样操作虽然用户切换为oracle,但是环境变量仍然是root的环境变量,所以会报环境变量错误,正确的命令是su - oracle,这样环境变量也会切换为oracle的环境变量。


看一下 su 命令的 man page:

NAME
su - run a shell with substitute user and group IDs

SYNOPSIS
su [OPTION]... [-] [USER [ARG]...]

DESCRIPTION
Change the effective user id and group id to that of
USER.

-, -l, --login
make the shell a login shell, clears all envvars
except for TERM, initializes HOME, SHELL, USER,
LOGNAME and PATH

...

A mere - implies -l. If USER not given, assume root.


可以看到,加了 - 选项后,会清空除term外的环境变量,重新初始化HOME、SHELL、USER、LOGNAME和PATH。

所以要多注意细节,尤其Linux下面,一点点的不一样,都有可能引起完全不同的结果。


Ubuntu 14.04搭建PHP5+Apache2+Oracle环境:http://www.linuxdiyf.com/linux/10119.html

Linux非图形界面安装Oracle数据库:http://www.linuxdiyf.com/linux/14391.html