免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 11779 | 回复: 28

关于 bash 模拟 sh 时针对环境变量的讨论 [复制链接]

论坛徽章:
0
发表于 2007-01-02 08:33 |显示全部楼层
当bash以sh为名运行时,在交互非login模式下,其继承了所有环境变量(包括任何用户定义的变量),唯独不继承PS*!
号称是靠向POSIX,但是俺用过的所有Unix(AIX、HPUX、SCO)的sh,在该模式下都是继承PS*变量的。

俺的环境:bash 3.00

[ 本帖最后由 platinum 于 2007-1-10 08:19 编辑 ]

论坛徽章:
0
发表于 2007-01-02 09:00 |显示全部楼层
原帖由 FH 于 2007-1-2 08:33 发表
当bash以sh为名运行时,在交互非login模式下,其继承了所有环境变量(包括任何用户定义的变量),唯独不继承PS*!
号称是靠向POSIX,但是俺用过的所有Unix(AIX、HPUX、SCO)的sh,在该模式下都是继承PS*变量的。

俺的环境:bash 3.00


这种现象变态但合法而和谐地存在着。

论坛徽章:
0
发表于 2007-01-02 09:36 |显示全部楼层
原帖由 langue 于 2007-1-2 09:00 发表


这种现象变态但合法而和谐地存在着。


感觉以前的bash好像没有这么变态

论坛徽章:
0
发表于 2007-01-02 09:39 |显示全部楼层
解决方案:

/etc/profile.d/MyPrompt.sh
export PS1='${PWD}> '

/etc/profile.d/MyPrompt.csh
set prompt='%/> '

/etc/bashrc
......
export ENV=/etc/profile

论坛徽章:
0
发表于 2007-01-02 13:12 |显示全部楼层
原帖由 FH 于 2007-1-2 08:33 发表
当bash以sh为名运行时,在交互非login模式下,其继承了所有环境变量(包括任何用户定义的变量),唯独不继承PS*!
号称是靠向POSIX,但是俺用过的所有Unix(AIX、HPUX、SCO)的sh,在该模式下都是继承PS*变量的。 ...


其实,你的问题最有可能的只是,因为你当初用的系统都是把 PS1 宣告为 export/environment variable,而不是一般 local 性质变数,所以才会有这种差异。

这样吧?你还有在那些的 AIX,HUPX 等系统吗?你可不可以登入哪些系统后,执行 env | grep PS1 结果列一下呢 ? 这样一看就知道原因了。

--

[ 本帖最后由 kenduest 于 2007-1-2 13:15 编辑 ]

论坛徽章:
0
发表于 2007-01-02 21:19 |显示全部楼层
原帖由 kenduest 于 2007-1-2 13:12 发表


其实,你的问题最有可能的只是,因为你当初用的系统都是把 PS1 宣告为 export/environment variable,而不是一般 local 性质变数,所以才会有这种差异。

这样吧?你还有在那些的 AIX,HUPX 等系统吗?你可不 ...


晕!
你自己试一下就知道了
俺Unix玩了十多年,Linux也玩了十年了,什么问题俺还看不清?

论坛徽章:
0
发表于 2007-01-03 01:09 |显示全部楼层
原帖由 FH 于 2007-1-2 21:19 发表
晕!
你自己试一下就知道了
俺Unix玩了十多年,Linux也玩了十年了,什么问题俺还看不清?


态度好像蛮高傲的 ?

PS1 本来就不是 export variable,所以怎么会有环境变量复制继承的特性呢?所以问题拉回来看,若你只是要能够 PS1 变量继承下去,请把 PS1 变量设定为 export variable 就可以了,不就是这样而已 ? 这样你就改改您 linux distro 的 bash 配置档即可,不是呼?

我都测试过了,于 bash 3 环境下把 PS1 变量设定为 export 变数后,就会具备复制继承的特性。

另外,也许该好好研究一下你的  .bashrc 配置,是否有改过 PS1 变量的程式码叙述。

--

[ 本帖最后由 kenduest 于 2007-1-3 01:18 编辑 ]

论坛徽章:
0
发表于 2007-01-03 09:39 |显示全部楼层
原帖由 kenduest 于 2007-1-3 01:09 发表


态度好像蛮高傲的 ?

PS1 本来就不是 export variable,所以怎么会有环境变量复制继承的特性呢?所以问题拉回来看,若你只是要能够 PS1 变量继承下去,请把 PS1 变量设定为 export variable 就可以了,不就 ...


晕!你没看懂俺的问题吧?知道啥叫交互非login模式不?
你进vi,然后:!sh,再告诉俺有没有PS1!
真是你说的那么简单的事,俺都不好意思发帖子!

[ 本帖最后由 FH 于 2007-1-3 09:41 编辑 ]

论坛徽章:
0
发表于 2007-01-03 16:25 |显示全部楼层
原帖由 FH 于 2007-1-3 09:39 发表
晕!你没看懂俺的问题吧?知道啥叫交互非login模式不?
你进vi,然后:!sh,再告诉俺有没有PS1!
真是你说的那么简单的事,俺都不好意思发帖子!


请上 GNU 的 coreutils mailing list 去回应你的问题,我想 developer 可以解决你的问题。因为在这边抱怨 bash 如何变态问题还是无解。

--

[ 本帖最后由 kenduest 于 2007-1-3 16:27 编辑 ]

论坛徽章:
0
发表于 2007-01-03 17:08 |显示全部楼层
原帖由 kenduest 于 2007-1-3 16:25 发表


请上 GNU 的 coreutils mailing list 去回应你的问题,我想 developer 可以解决你的问题。因为在这边抱怨 bash 如何变态问题还是无解。

--


看清楚好不好,俺给出了解决方案,而不是像某人那样问题都没有看清也不实验就开始信口开河。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP