2012-06-06 151 views
1

我安裝我的一些代碼,使用perlbrew需要的Perl 5.010一個CentOS 5.x的服務器上使用源,它需要兩線在bash腳本

source ~/perl5/perlbrew/etc/bashrc 

perlbrew switch perl-5.10.1 

要在我的/ usr/bin/env中有perl 5.010之前在shell中執行,所以我嘗試創建以下可執行bash腳本以最小化這兩個步驟:./setEnv.sh

#!/bin/bash 
echo "**setting environment variables - 'perlbrew switch-off' to exit" 
SETSOURCE= `source ~/perl5/perlbrew/etc/bashrc` 
echo $SETSOURCE 
SETPERL= `perlbrew switch perl-5.10.1` 
echo $SETPERL 
+5

你的問題是? –

+0

語法說明:由於變量賦值和命令替換之間有空白,因此賦值不起作用。 –

回答

0

使用source命令,無反引號。只需在您的腳本中寫一行

source ~/perl5/perlbrew/etc/bashrc 

。 (source有副作用,當你在一個子shell中不起作用,我甚至不知道你可以運行source作爲外部命令)。

+0

我建議刪除最後一段並將其添加爲註釋。這不是答案的一部分。也許其他SOers /訪問不需要關於如何提問的講座,即使我完全同意,upvoting David的評論也會起作用。 – KurzedMetal

+0

@KurzedMetal:你說的對,我想。 –

2

進程無法修改其父環境,所以你做錯了,因爲shebang。

在反引號(subshel​​l)中執行源隻影響子shell,並在命令執行後結束。

$ ### test.sh assign "inside" to TEST 
    $ TEST='outside'; echo "$(source test.sh; echo $TEST)" - $TEST 
    inside - outside 

什麼你可能想要做的就是直接從你的shell源的setEnv.sh腳本。

$ ### test.sh assign "inside" to TEST 
    $ TEST='outside'; source test.sh; echo $TEST 
    inside 
+0

爲什麼我不能按回車鍵並讓它在評論表單中插入換行符? Chrome/Ubuntu12.04 ??這並不酷。 – user1439590

+0

@ user1439590因爲,AFAIK,我們不能做多行評論。 – KurzedMetal