Linux下Oracle環境變數無效問題解決

來源:互聯網
上載者:User

Linux下Oracle環境變數無效問題解決

今天在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下面,一點點的不一樣,都有可能引起完全不同的結果。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.