解决Linux图形界面登陆时不执行~/.bash_profile的问题

发布 : 2019-06-13 分类 : Linux 浏览 :

实验环境

Oracle Linux 7.5
Oracle database 12.2.0.1
$ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1

问题

oracle用户的~/.bash_profile文件设置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[oracle@ora122 ~]$ cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs



PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

. /home/oracle/scripts/setEnv.sh

/home/oracle/scripts/setEnv.sh里面配置了和oracle instance相关的环境变量,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[oracle@ora122 ~]$ cat /home/oracle/scripts/setEnv.sh
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=ora122.localdomain
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1
export ORACLE_SID=cdb1

export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/sqlcl/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

alias sp1='sqlplus sys/oracle@cdb1 as sysdba'
alias sp2='sqlplus sys/oracle@pdb1 as sysdba'

在开机界面UI登陆oracle用户时,不会自动执行~/.bash_profile文件,必须在terminal通过su -
oracle再次切换到oracle用户时,~/.bash_profile文件才会被执行,环境变量才会生效。

解决方法

通过登陆界面登陆oracle用户时,是通过non-login shell的方式来登陆的,此时~/.bash_profile不会被执行,但此时~/.bashrc会被执行。
因此,修改oracle用户的~/.bashrc如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[oracle@ora122 ~]$ cat ~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

. /home/oracle/scripts/setEnv.sh
本文作者 : Shen Peng
原文链接 : http://yoursite.com/2019/06/13/解决Linux图形界面登陆时不执行-bash-profile的问题/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹