弱弱的问一句,为什么我的oracle用户.bash_profile不生效
每次切换到oracle用户都要手动执行以下source .bash_profile,哪位牛人能告诉一下为什么?以前装了很多机器,oracle用户的.bash_profile都是自动生效的。
$env如下:
-bash-2.05b$ env
REMOTEHOST=125.125.0.234
SHELL=/bin/bash
TERM=ansi
MAIL=/var/mail/oracle
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/oracle
SHLVL=1
HOME=/home/oracle
LOGNAME=oracle
_=/bin/env
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你是怎么切换用户的?
su - oracle
我把oracle用户的profile放到系统变量里面去了,现在能用了。谢谢楼上的。。。。
现象:
我用ssh连接到服务器,用oracle用户登录,.bash_profile中间中的设置生效了。
用oracle用户在服务器(debian)的桌面环境中登录,登陆后打开一console,此时发现在该console中,.bash_profile文件中的设置并没生效。
请问这是怎么回事?
.bash_profile只在登陆的时候读取,在X下登陆打开一个console的话是不读取该文件的。如果你在字符模式下登陆输入用户和密码的话是读取的。如果在X下打开一个console要读取配置,就要写在.bashrc里面,而不是.bash_profile里面.
你可以在.bashrc里面加入:
if test -f .bash_profile; then
. .bash_profile
fi
这样.bash_profile里面内容变了就不需要再改.bashrc面的内容了.
bash 登陆的时候读取配置文件的顺序如下:
.bash_profile
.bash_login
.profile
按这个顺序只要读到一个就不再读取其他的两个. 当然全局的/etc/profile是最先读的,/etc/profile里面的配置可以在以上三个文件中覆盖掉.
当bash不是作为登陆shell打开时,比如你先用csh登陆,然后再输入bash切换到bash ,那么只读取.bashrc
里的内容.不读取.bash_profile
[ 本帖最后由 gucuiwen 于 2006-9-1 17:38 编辑 ]
经过试验,gnome中的console打开时执行.bashrc。
不过还有些疑问:
因为我用的是debian linux,在.bash_profile中存在如下代码
复制代码
1。若在.bashrc中包含.bash_profile,在打开console时会死循环。
2。不知gucuiwen 用的是那种linux?两种linux在处理顺序上好像不一样。不知道是否有标准处理顺序。