2012-06-17 39 views
6

我有一个BlueHost的服务器设置,我试图设置路径在我的Perl程序设置路径的Perl程序

print "Content-type: text/html\n\n"; 
    my $output=`export PATH=\${PATH}:/usr/local/jdk/bin`; 
    my output1=`echo \$PATH`; 
    print $output1; 

然而,它还是老样子只打印原单$ PATH。/usr/local/jdk不会被添加。任何人都可以告诉我我做错了什么?

回答

12

您正在创建一个shell,执行一个在shell中设置环境变量的shell命令,然后退出shell而不对环境变量执行任何操作。你从未改变过perl的环境。这将使用

local $ENV{PATH} = "$ENV{PATH}:/usr/local/jdk/bin"; 

有点奇怪,以添加到路径的尽头,但。

2

请注意,ikegami的答案只会在您的本地Perl脚本中设置路径,并且不会为调用Perl脚本的shell更改它。

如果你想改变外壳环境下的路径,所以你跑也将从这一变化中受益的下一个程序, 你将不得不使用“”或“点空间”序列, 或更好的是 - 对'.bashrc'或'.login'文件中的路径进行此更改。

+0

好吧,试试吧。 – user1092042

+0

@ikegami,请再次阅读我的答案 - 它不违反你的。由于这个问题并不清楚,我只是强调,这种改变只会发生在Perl脚本上下文本身中,并且不会在脚本完成之后,即在调用shell中持久化。 – Gonen