免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8035 | 回复: 9
打印 上一主题 下一主题

.bash_profile 中定义变量和alias的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-10 22:38 |只看该作者 |倒序浏览
我用的是fedora 9 有一个用户hong,在/home/hong/.bash_profile中定义了一个变量QTDIR,用alias定义了一个别名hong,文件内容如下:
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
alias hong=hongjun
PATH=/usr/lib/qt4/bin:$PATH:$HOME/bin
export PATH
QTDIR=/usr/lib/qt4

注销,然后在gnome环境下重新登录用户hong,然后选择应用程序-》系统工具-》终端,执行与结果如下
[hongjun@localhost ~]$ echo $QTDIR
/usr/lib/qt4
[hongjun@localhost ~]$ alias hong
bash: alias: hong: not found

问题:都是在同一个文件.bash_profile中定义的环境变量QTDIR和alias定义的别名hong,而且在同一个终端里执行,为什么QTDIR能成功设置,而别名hong却不能识别呢?

另:我上网查找过相关资料,按照我这种方式打开的终端应该是非login shell,资料里说非login shell是不执行.bash_profile的,那为什么QTDIR这个变量却能正确识别呢?

这个问题困扰我很久了,望各位高手赐教,小弟谢过。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2008-08-10 22:49 |只看该作者
alias 定义是不继承的,但 environment variable 的定义则可以。因此,你最好把 alias 定义放在 non-login shell 的配置文件 .bashrc 中,然后在 login shell 的配置文件 .bash_profile 中通过 . 执行 .bashrc。

[ 本帖最后由 MMMIX 于 2008-8-10 22:51 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-08-10 23:40 |只看该作者
原帖由 MMMIX 于 2008-8-10 22:49 发表
alias 定义是不继承的,但 environment variable 的定义则可以。因此,你最好把 alias 定义放在 non-login shell 的配置文件 .bashrc 中,然后在 login shell 的配置文件 .bash_profile 中通过 . 执行 .bashrc。


那你能不能解释一下为什么QTDIR可以被识别?非login shell本身不会执行.bash_profile,这个QTDIR是从哪里“继承”来的呢?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2008-08-10 23:51 |只看该作者
原帖由 hongjunbj 于 2008-8-10 23:40 发表


那你能不能解释一下为什么QTDIR可以被识别?非login shell本身不会执行.bash_profile,这个QTDIR是从哪里“继承”来的呢?

不知道。估计是 shell 嵌套执行引起的,echo $SHLVL 看看。

另外,Gnome 自带的终端是可以设置为执行 login shell 的,当然默认是执行 non-login shell。

[ 本帖最后由 MMMIX 于 2008-8-11 00:19 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-08-11 00:03 |只看该作者

回复 #3 hongjunbj 的帖子

有些环境变量是我们还没认识到的

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2008-08-11 00:17 |只看该作者
原帖由 honckly 于 2008-8-11 00:03 发表
有些环境变量是我们还没认识到的

和这个没关系,估计还是 shell 嵌套执行(在 shell 中再执行 shell)的问题。

[ 本帖最后由 MMMIX 于 2008-8-11 00:19 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-08-11 12:47 |只看该作者
搂主在同一个文件里定义的QTDIR和alias,
要么都被执行,要么都不执行,不可能一个能用,一个不能用。
搂主在查查QTDIR是不是还有别的地方定义了?

论坛徽章:
0
8 [报告]
发表于 2008-08-11 12:58 |只看该作者
alias还是放在.bash_profile中定义比较好

论坛徽章:
0
9 [报告]
发表于 2008-08-30 00:59 |只看该作者
mark...啊

PS:为什么还要打这么多字

论坛徽章:
1
寅虎
日期:2015-01-23 02:35:47
10 [报告]
发表于 2008-08-30 06:42 |只看该作者
QTDIR看看别处是否有定义
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP