2012-06-17 66 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