启动Linux终端时不能自动执行.bash_profile文件

JikeBaker 2009-09-23 10:02:48
如题,我装的是虚拟机VMware Workstation V6.0,内装Redhat AS4 U4系统,装好系统后,新建了几个用户,并分别设置了用户的.bash_profile文件,但是当我用某个用户登陆进系统打开终端时,发现它不会自动地使.bash_profile文件中的设置生效,每次都需要我手动的用source .bash_profile来使它生效。
而如果我在root用户终端下以su - 用户名 的话,则会发现.bash_profile的设置会有效

现在我们的问题就是怎样使用某用户登陆系统打开终端后直接使.bash_profile文件中的设置生效,而无须用source .bash_profile来手动生效???
...全文
3120 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
yetisun 2011-08-22
  • 打赏
  • 举报
回复
我也是遇到同样的问题,在KDE桌面环境下,登录系统后会自动启动一个终端,LD_LIBRARY_PATH环境变量就没有了,切换到会话GNOME,就正常,
并且分析系统后配置文件.bash_profile应该是被执行过的,因为其它变量是对的。
所以原因可能是系统启动后自动启动一个shell导致LD_LIBRARY_PATH被替换掉了
Romandzj 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 jikebaker 的回复:]
    如题,我装的是虚拟机VMware Workstation V6.0,内装Redhat AS4 U4系统,装好系统后,新建了几个用户,并分别设置了用户的.bash_profile文件,但是当我用某个用户登陆进系统打开终端时,发现它不会自动地使.bash_profile文件中的设置生效,每次都需要我手动的用source .bash_profile来使它生效。
    而如果我在root用户终端下以su - 用户名  的话,则会发现.bash_profile的设置会有效

现在我们的问题就是怎样使用某用户登陆系统打开终端后直接使.bash_profile文件中的设置生效,而无须用source .bash_profile来手动生效???
[/Quote]

我也是遇到同样的问题,同求答案
勇往直前! 2009-09-24
  • 打赏
  • 举报
回复
Just pass by~~~
bourbaki 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jikebaker 的回复:]
引用 13 楼 bourbaki 的回复:
你是从桌面登录吗?如果是从模拟终端进去,是不会执行.bash_profile的,只会执行.bashrc


在通常情况下会将环境变量写到.bashrc里嘛??
[/Quote]

在登录情况下,一般shell会先读取/etc/profile,再读取.bash_profile。如果是在非登录情况下,shell只会去读取.bashrc。

登录情况,是由init进程启动/bin/login的情况。如果你是在桌面下进入shell,显然,属于非登录情况。简单的说,如果你是打开gnome-terminal之类的模拟终端,那就是非登录情况。

一般如果你需要定义一些环境变量,并且希望每次打开shell都有效,最好放在.bashrc中,因为.bash_profile一般写成首先检查并运行.bashrc。当然,这不是绝对的,不是非这样不可,所以你最好仔细看看你的这两个文件。
JikeBaker 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bourbaki 的回复:]
你是从桌面登录吗?如果是从模拟终端进去,是不会执行.bash_profile的,只会执行.bashrc
[/Quote]

在通常情况下会将环境变量写到.bashrc里嘛??
JikeBaker 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 bourbaki 的回复:]
引用 18 楼 jikebaker 的回复:
引用 13 楼 bourbaki 的回复:
你是从桌面登录吗?如果是从模拟终端进去,是不会执行.bash_profile的,只会执行.bashrc


在通常情况下会将环境变量写到.bashrc里嘛??


在登录情况下,一般shell会先读取/etc/profile,再读取.bash_profile。如果是在非登录情况下,shell只会去读取.bashrc。

登录情况,是由init进程启动/bin/login的情况。如果你是在桌面下进入shell,显然,属于非登录情况。简单的说,如果你是打开gnome-terminal之类的模拟终端,那就是非登录情况。

一般如果你需要定义一些环境变量,并且希望每次打开shell都有效,最好放在.bashrc中,因为.bash_profile一般写成首先检查并运行.bashrc。当然,这不是绝对的,不是非这样不可,所以你最好仔细看看你的这两个文件。
[/Quote]

虽然目前还是没有完全解决,不过你提的这个思路还是不错的……
JikeBaker 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaocai0001 的回复:]
检查各个.bash_profile对应用户是否有权限读
[/Quote]

权限问题应该不存在吧,
-rwxr-xr-x 1 hssale hsa 1185 9月 18 08:31 .bash_profile

这是我用户目录下的.bash_profile文件的相关信息
JikeBaker 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiangxc2004 的回复:]
是不是你的用户默认shell是哪个啊?
echo $SHELL
看看,有的shell默认配置文件不是.bash_profile
[/Quote]
用echo $SHELL的结果是/bin/bash
JikeBaker 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yanxu_1234 的回复:]
问楼主:你是用什么用户登录?每个用户都会有自己的.bash_profile!!!
[/Quote]
每个用户登进去都不会自动去执行其用户主目录下的.bash_profile设置
yanxu_1234 2009-09-23
  • 打赏
  • 举报
回复
问楼主:你是用什么用户登录?每个用户都会有自己的.bash_profile!!!
yanxu_1234 2009-09-23
  • 打赏
  • 举报
回复
能不能把你的.bash_profile文件贴出来,让大家看看?
xiaocai0001 2009-09-23
  • 打赏
  • 举报
回复
检查各个.bash_profile对应用户是否有权限读
jiangxc2004 2009-09-23
  • 打赏
  • 举报
回复
是不是你的用户默认shell是哪个啊?
echo $SHELL
看看,有的shell默认配置文件不是.bash_profile
yurui05 2009-09-23
  • 打赏
  • 举报
回复
关注 留个记号
JikeBaker 2009-09-23
  • 打赏
  • 举报
回复
没人回呀?
这个问题我从来没遇到过,问我们老大他也没遇到过……
bourbaki 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jiazhen 的回复:]
你把
source .bash_profile
这句加入到 /etc/rc.d/rc.sysinit或/etc/rc.d/rc.local里让它开机自动执行呢?
[/Quote]
这个时候HOME如果设置了的话,一般是/。不管怎么,都不可能是指向普通用户的HOME
  • 打赏
  • 举报
回复
你把
source .bash_profile
这句加入到 /etc/rc.d/rc.sysinit或/etc/rc.d/rc.local里让它开机自动执行呢?
bourbaki 2009-09-23
  • 打赏
  • 举报
回复
你是在桌面打开模拟终端的吗?那你把设置写在.bashrc吧,这应该总是不错的,因为你的.bash_profile会执行.bashrc的。
JikeBaker 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bourbaki 的回复:]
你是从桌面登录吗?如果是从模拟终端进去,是不会执行.bash_profile的,只会执行.bashrc
[/Quote]

桌面登录的
bourbaki 2009-09-23
  • 打赏
  • 举报
回复
你是从桌面登录吗?如果是从模拟终端进去,是不会执行.bash_profile的,只会执行.bashrc
加载更多回复(3)

19,610

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧