如何在Linux中创建具有多个变量的环境来运行程序?

时间:2017-01-31 16:47:34

标签: linux bash environment-variables cgi

我正在编写一个编译程序,该程序将用作CGI-BIN。

cc -o script.cgi script.c library.a

我可以通过我的网络服务器(Apache)+网络浏览器http://localhost/cgi-bin/script.cgi或命令行./script.cgi进行测试。

正常执行时,命令行将显示如下内容:

Content-type: text/html;charset=utf-8

<!DOCTYPE html>
<html>
<head>
     <title>Hello, World!</title>
</head>
<body>
     <h1>Hello, World!</h1>
     <p>Some text that should depend on GET and
     other environmental variables.</p>
</body>
</html>

Web浏览器将获取相应的HTML页面,并相应地显示它。到目前为止一切都很好。

问题是,在调试时,环境变量似乎会产生一些错误。我知道我可以通过运行命令行来提供一个特定的变量,例如:

QUERY_STRING='a=b&c=d' ./script.cgi

而且,如果我不小心,我可能会遇到核心分段错误。如果在打印Content-type行之前发生此错误,我将在浏览器中收到500错误,并在从命令行进行测试时出现核心分段错误消息。

500错误几乎没有调试空间。我无法检查任何stderr输出。命令行方法允许我查看更具体的错误消息和调试信息。但我在与Web服务器/浏览器不同的环境中进行测试。

那么如何重新创建具有多个环境变量的Web服务器环境,以及(如果可能的话)从bash环境中删除环境变量。

我没有基于bash脚本的解决方案,我不需要一个单行。

1 个答案:

答案 0 :(得分:2)

您可以通过在同一行上点击它们来设置多个变量,例如:

var1=foo var2=bar ./script.cgi

或者你可以把这一切都放在一个文件中(比如env.sh),内容如下:

export var1=foo
export var2=bar
在运行脚本之前

然后source文件:

source env.sh
./script.cgi

如果要清除继承的shell环境,可以使用env -i

env -i var1=foo var2=bar ./script.cgi

或者,如果您想要一个脚本,请创建一个脚本(比如script.sh),如:

export var1=foo
...
./script.cgi

并调用脚本:

env -i ./script.sh