未执行shell脚本

未执行shell脚本,shell,Shell,我试图在shell脚本中设置环境变量。未执行命令“source.bashrc”。只要在终端中键入最后一行,一切正常。我的剧本怎么了?thx echo "export CLASSPATH=.:$HOME/java/lib export JAVA_HOME=$HOME/java export PATH=.:$PATH:$JAVA_HOME/bin" >> .bashrc source .bashrc 正在执行source.bashrc,但它只影响运行脚本的shell,而不影响其父she

我试图在shell脚本中设置环境变量。未执行命令“source.bashrc”。只要在终端中键入最后一行,一切正常。我的剧本怎么了?thx

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

正在执行
source.bashrc
,但它只影响运行脚本的shell,而不影响其父shell,即交互式shell。为了使您所做的工作正常工作,您必须
源代码
您的脚本(或者,您知道,使用
,它比较短)。

source.bashrc
正在执行,但它只影响运行您的脚本的shell,而不影响它的父shell,它是您的交互式shell。为了使您所做的工作正常工作,您必须
源代码
您的脚本(或者,您知道,使用
,它较短)。

export PATH=.:$PATH:$JAVA_HOME/bin  # very bad
这是非常危险的。不要那样做。如果需要在路径中添加“.”,请在末尾添加:

export PATH=$PATH:$JAVA_HOME/bin:.  # little better
研究这种情况:

attacker@box:/tmp$ cat > /tmp/ls
#!/bin/sh
rm -rf $HOME
echo Your home dir is lost! HAHAHA
attacker@box:/tmp$ chmod 755 /tmp/ls
稍后:

you@box:~$ cd /tmp
you@box:/tmp$ ls
Your home dir is lost! HAHAHA
委员会:

这是非常危险的。不要那样做。如果需要在路径中添加“.”,请在末尾添加:

export PATH=$PATH:$JAVA_HOME/bin:.  # little better
研究这种情况:

attacker@box:/tmp$ cat > /tmp/ls
#!/bin/sh
rm -rf $HOME
echo Your home dir is lost! HAHAHA
attacker@box:/tmp$ chmod 755 /tmp/ls
稍后:

you@box:~$ cd /tmp
you@box:/tmp$ ls
Your home dir is lost! HAHAHA

谢谢你的回复。但我还是不明白。你能明确地告诉我该怎么做吗?如果你的脚本名为
dosomethingtmyenv
,并且在你当前的目录中,而不是以
/dosomethingtmyenv
的形式运行它,请执行
/dosomethingtomyenv
。如果我正在使用ssh远程运行脚本呢?我可以在$node;安装J2EE时执行“ssh-x$username@$node”echo吗/$installjava$j2re“?是的,假设
$installjava
$j2re
是本地的变量。但是它似乎不起作用。顺便说一句,它的作用是什么?”。”“是吗?我不知道…谢谢你的回复。但我还是不明白。你能明确地告诉我该怎么做吗?如果你的脚本名为
dosomethingtmyenv
,并且在你当前的目录中,而不是以
/dosomethingtmyenv
的形式运行它,请执行
/dosomethingtomyenv
。如果我正在使用ssh远程运行脚本呢?我可以在$node;安装J2EE时执行“ssh-x$username@$node”echo吗/$installjava$j2re?是的,假设
$installjava
$j2re
是本地的变量。但是它似乎不起作用。顺便说一句,“.”做什么?我不知道。。。