gpt4 book ai didi

linux - 带有 shellshock 固定 bash 版本的非导入环境变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:09 26 4
gpt4 key购买 nike

我有一个简单的 bash 脚本,它修改将由后续二进制文件使用的环境变量。下面是我的基本脚本:

#!/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 上修补 shellshock 错误后,test_process 不会读取 DBROOT 的导出值,也不会读取全局环境变量。就好像“test_process”忽略了导出变量和全局变量。

我没有“test_process”的源代码。bash 版本是 version 2.05b.0(1)-release (rpm 版本是 bash-2.05b-41.7.i386.rpm )我在 Red Hat Enterprise Linux AS 上运行发布 3

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

#define NON_INTERACTIVE_LOGIN_SHELLS

脚本再次运行。如果没有这个定义,bash 会在 su 命令之后误解 - 字符

最佳答案

您使用的是非常古老的软件。

我建议尝试:

su -c "DBROOT='NEW_DIRECTORY' TERM='xterm' <test_process> " - omni

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

关于linux - 带有 shellshock 固定 bash 版本的非导入环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26490661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com