首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带外壳激波固定bash版本的非导入环境变量

带外壳激波固定bash版本的非导入环境变量
EN

Stack Overflow用户
提问于 2014-10-21 15:37:19
回答 1查看 149关注 0票数 1

我有一个简单的bash脚本,它修改了一个环境变量,该变量将被随后的二进制文件使用。我的基本剧本:

代码语言:javascript
复制
#!/bin/bash
export DBROOT="NEW_DIRECTORY" 
export TERM=xterm
su  -c " <test_process> " - omni

DBROOT变量被"test_process“用作环境变量。另外,DBROOT被定义为另一个值"OLD_DIRECTORY“作为全局环境变量。脚本的目标是强制"test_process“使用NEW_DIRECTORY值(导出值)。

对于无补丁的bash版本,测试成功了。但是,在修补bash上的global休克bug之后,test_process既不读取DBROOT的导出值,也不读取全局环境变量。就好像"test_process“忽略了导出的和全局的变量。

我没有"test_process“的源代码。这个版本是2.05b.0(1)-release (rpm版本是bash-2.05b-41.7.i386.rpm ),我在上作为第3版运行。

更新:通过设置编译时定义重新编译bash2.05b最后的源代码后的

#define NON_INTERACTIVE_LOGIN_SHELLS

剧本又起作用了。如果没有此定义,bash在-命令之后误解了su字符。

EN

回答 1

Stack Overflow用户

发布于 2014-10-21 15:47:40

你用的软件很古老。

我建议尝试:

代码语言:javascript
复制
su -c "DBROOT='NEW_DIRECTORY' TERM='xterm' <test_process> " - omni

这会将环境设置移动到su运行的shell中,而不是依赖su来中继环境。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26490661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档