LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 903|回复: 5

debian的PATH变量问题,求解

[复制链接]
发表于 2007-9-27 11:31:07 | 显示全部楼层 |阅读模式
我的.bash_profile如下

# ~/.bash_profile: executed by bash(1) for login shells.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/login.defs
#umask 022

# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
    PATH=~/bin:"${PATH}"
fi

我添加了~/bin进PATH。我用GDM登录,登录后我把终端设为“以登录shell方法运行命令”,现在运行~/bin下的程序,我在终端直接输入命令可以运行,但是在gnome下按alt+f2在运行里输入命令就无法运行。看似PATH的变量根本没有更改。我也试着修改/etc/profile文件里的PATH,也不行。
我关闭GDM的启动服务,重启后,在命令行输入startx进入桌面,用alt+f2就可以运行程序,看来GNOME对.bash_profile没有起作用。在Ubuntu下没有运行这个情况。

请问大家在用Debian上有没有遇到这样的现象?如何解决的。
发表于 2007-9-27 12:09:39 | 显示全部楼层
.bash_profile 只有用bash登录系统时才起作用. 因为你用gdm登录, 所以.bash_profile 无效.
回复 支持 反对

使用道具 举报

发表于 2007-9-27 12:13:51 | 显示全部楼层
如果用gdm,  在 /etc/X11/Xsession.d/ 目录中新建一个 25set_path 文件, 把你的
# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
fi
放在里面就行.
回复 支持 反对

使用道具 举报

发表于 2007-9-27 13:32:56 | 显示全部楼层
精确一点,.bash_profile 是 login shell 时被导入的,non-login shell 是导入 .bashrc
回复 支持 反对

使用道具 举报

发表于 2007-9-27 14:25:21 | 显示全部楼层
不过如果直接用 Alt+F2 运行程序, .bashrc 中设定的环境变量也不会被执行. 还按3楼的办法在X启动的时候设吧.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-27 17:08:54 | 显示全部楼层
其中还有一个问题,我的JDK安装在/opt/jdk,在.bash_profile文件中的PATH里添加了/opt/jdk/bin:/opt/jdk/jre/bin。在桌面上运行eclipse要出现。在命令终端运行没有问题。其实也是PATH路径的问题,像3楼说的添加一个25set_path 这个文件,还得把/opt/jdk/bin:/opt/jdk/jre/bin添加进这个文件。让我纳闷的是,在UBUNTU里就不需要这些设置。只有.bash_profile里设好就完全没有问题。想知道的是UBUNTU里是怎么做到的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表