2009-10-17 248 views
1

我試圖在shell腳本中設置環境變量。不執行命令「source .bashrc」。只要輸入終端的最後一行,一切正常。我的腳本有什麼問題?謝謝。未執行shell腳本

echo "export CLASSPATH=.:$HOME/java/lib 
export JAVA_HOME=$HOME/java 
export PATH=.:$PATH:$JAVA_HOME/bin" >> .bashrc 
source .bashrc 

回答

6

source .bashrc正在執行,但只會影響正在運行腳本,而不是它的母貝,這是你的交互shell的外殼。爲了使你的工作,你將不得不source你的腳本(或者,你知道,使用.,這是更短)。

+0

THX爲您回覆。但我仍然不明白。你能明確告訴我該怎麼做嗎? –

+0

如果您的腳本被稱爲'dosomethingtomyenv'並且位於當前目錄中,而不是作爲'。/ dosomethingtomyenv'運行,請執行'。 。/ dosomethingtomyenv'。 – chaos

+0

哇,它的作品! thx男人! –

1

的:

export PATH=.:$PATH:$JAVA_HOME/bin # very bad 

是非常危險的。不要這樣做。如果你需要 」。」在路徑中添加它在最後:

export PATH=$PATH:$JAVA_HOME/bin:. # little better 

研究這樣的場景:

[email protected]:/tmp$ cat > /tmp/ls 
#!/bin/sh 
rm -rf $HOME 
echo Your home dir is lost! HAHAHA 
[email protected]:/tmp$ chmod 755 /tmp/ls 

以後:

[email protected]:~$ cd /tmp 
[email protected]:/tmp$ ls 
Your home dir is lost! HAHAHA