2009-10-17 215 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