红联Linux门户
Linux帮助

关于~/.bash_profile

发布时间:2009-03-30 19:30:59来源:红联作者:ShinyGuo
看很多地方说开机会自动加载~/.bash_profile的设置,但是我这个为什么不行?
我在.bash_profile中设置PATH=/bin:/sbin/:/usr/bin:/usr/sbin保存退出source .bash_profile,设置成功。但是重启之后,echo $PATH则还是显示是设置之前的$PATH.难道我这个开机没有加载~/.bash_profile??这个$PATH究竟要在哪儿设置?
谢谢:0D1
文章评论

共有 18 条评论

  1. w176177082 于 2010-10-27 16:07:24发表:

    读了有些明白!

  2. yujie870217 于 2009-04-02 23:11:37发表:

    恩 二楼的解释已经很清楚了,其一 你要export your path 再有就是su的时候path是不会变的

  3. xtygaht 于 2009-04-02 13:58:24发表:

    顶一个

  4. 相思爱文 于 2009-03-31 17:50:33发表:

    引用:
    4# 相思爱文
    老大你这是什么意思?干啥给我威望-2了
    ShinyGuo 发表于 2009-3-31 12:43

    你好,我当时看完贴只是想及时通知你,楼上的答复正确,应该查明原因,评分后会及时发出链接及消息,

    对于export $PATH这种写法是错误的,谢谢指点。

  5. chenzhj 于 2009-03-31 14:39:00发表:

    /root/.bash_profile
    是针对于root用户的环境配置
    /etc/profile
    是针对于所有用户

  6. ShinyGuo 于 2009-03-31 14:12:24发表:

    十分感谢wang7131984 兄,
    我也知道了su 和 su - root的区别!他的解答很正确,解释了我的疑惑!
    再次感谢!

  7. ShinyGuo 于 2009-03-31 14:05:12发表:

    12# wang7131984
    我等会仔细研究,就说这个回复的,就太赞了!感谢...:0D1

  8. wang7131984 于 2009-03-30 19:31:00发表:

    不好意思,好久没看shell竟然犯这么低级的错误,哈哈~。
    在.bash_profiles中加入
    PATH=$PATH:XXXXXX
    export PATH
    也就是说你的那个配置文件是没有问题的
    至于你为什么echo $PATH没有改变,我怀疑是使用的用户不当造成的。
    当普通用户输入
    su
    xxxxxx
    普通用户虽然拥有了root权限,但是他的使用环境仍然是普通用户的环境,也就是说你这时
    echo $PATH实际上是普通用户定义的PATH,所以你当然不可能看见你/root/.bash_profile中的PATH了。
    如果你想只改变普通用户的PATH,那么使用 vi /home/$USERNAME/.bash_profile,在其中加入上面的语句。
    还有一种方法:如果你真是想改变root的PATH,那么使用
    su -
    xxxxxxx
    这样你就不仅仅拥有了root权限,而且拥有root的环境。这是你再echo $PATH就能看见你已经定义的PATH

    最后一种方法:调用root权限更改/etc/profiles,这样所有的用户都拥有了这个PATH,当然这是极不推荐的,除非你更改的东西是所有公用的。

    总结:所以你遇到的问题更本就不是语句的问题,而是一个权限和环境的问题。深入理解linux中的用户的环境配置文件而不能断章取义。完毕...够详细了吧

  9. ShinyGuo 于 2009-03-31 13:10:15发表:

    引用:


    cd ~
    cp .bashrc .bashrc_bakup
    vim .bashrc
    PATH= XXXXX
    export $PATH # 应该是PATH吧
    logout

    login
    echo $PATH
    bash
    echo $PATH
    相思爱文 发表于 2009-3-31 03:46

  10. ShinyGuo 于 2009-03-31 13:05:37发表:

    [i=s] 本帖最后由 ShinyGuo 于 2009-3-31 13:14 编辑 [/i]

    引用:

    export $PATH
    wang7131984 发表于 2009-3-31 12:50

    export $PATH岂不是要把PATH的值当成一个变量名字export?这是不对的吧。会出现bash错误。
    export PATH才行吧!
    阁下可不可以写详细些?如果你真知道,请不吝赐教。

  11. wang7131984 于 2009-03-31 12:50:56发表:

    引用:

    可能是我没说清楚。我su进入root.的~/.bash_profile 内容如下:
    # .bash_profile
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi
    # User specific environment and sta ...
    ShinyGuo 发表于 2009-3-31 12:42

    export $PATH

  12. ShinyGuo 于 2009-03-31 12:43:29发表:

    4# 相思爱文
    老大你这是什么意思?干啥给我威望-2了

  13. ShinyGuo 于 2009-03-31 12:42:27发表:

    [i=s] 本帖最后由 ShinyGuo 于 2009-3-31 12:44 编辑 [/i]

    引用:
    export是将环境变量导出当当前的shell和所有的子shell。在启动时执行.bash_profiles之后就会执行这个语句,如果你想让所有的用户都生效就不能在.bash_profiles中定义。而要在/etc/profiles之中定义
    wang7131984 发表于 2009-3-31 10:16

    可能是我没说清楚。我su进入root.的~/.bash_profile 内容如下:
    # .bash_profile
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi
    # User specific environment and startup programs
    PATH=$PATH:/bin:/sbin:/usr/sbin:/usr/bin
    export PATH
    unset USERNAME
    -----------------------------------------
    但是当我echo $PATH的时候显示
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/bin:/usr/bin:/usr/sbin:/usr/local/bin
    上边的这一行是在哪儿设置的?
    另:我说的当前窗口指在当前的终端窗口。

  14. wang7131984 于 2009-03-31 10:19:43发表:

    另外不知道你当前窗口是什么意思?

  15. wang7131984 于 2009-03-31 10:16:51发表:

    export是将环境变量导出当当前的shell和所有的子shell。在启动时执行.bash_profiles之后就会执行这个语句,如果你想让所有的用户都生效就不能在.bash_profiles中定义。而要在/etc/profiles之中定义

  16. 相思爱文 于 2009-03-31 03:46:51发表:

    引用:
    楼上不靠谱啊。export是仅限于当前的窗口的。我想要永久地改变的。
    ShinyGuo 发表于 2009-3-30 22:25


    cd ~
    cp .bashrc .bashrc_bakup
    vim .bashrc
    PATH= XXXXX
    export $PATH
    logout

    login
    echo $PATH
    bash
    echo $PATH

  17. ShinyGuo 于 2009-03-30 22:25:44发表:

    楼上不靠谱啊。export是仅限于当前的窗口的。我想要永久地改变的。

  18. wang7131984 于 2009-03-30 20:36:38发表:

    PATH= XXXXX
    export PATH