0

我想编写一个 shell 脚本来执行诸如“export JAVA_HOME=.....”之类的命令我该如何编写脚本?

我尝试:

#!/bin/sh
echo "test"

export PATH=$JAVA_HOME/bin:$PATH
export AWS_AUTO_SCALING_HOME=/usr/local/CLI
export PATH=$PATH:$AWS_AUTO_SCALING_HOME/bin
export AWS_CREDENTIAL_FILE=/usr/local/CLI/credential-file-path.template

但是命令没有被执行。

4

3 回答 3

4

但是命令没有被执行。

它们被执行,但在一个子外壳中。父 shell 不继承这些值。

它不是执行脚本,source而是:

source /path/to/myscript.sh

或者

. /path/to/myscript.sh

进一步阅读: 执行 bash 脚本和采购 bash 脚本有什么区别?

于 2013-03-04T03:29:45.933 回答
4

你是如何执行你的脚本的?如果您使用:

$ script.sh

环境是在脚本执行期间设置的,但父 shell 完全不受此影响(Unix 不是 DOS!)。

要将命令的结果输入您的 shell,请使用:

$ . script.sh

或者在 Bash 中你可以使用:

$ source script.sh

(这是.(dot) 命令的同义词,该命令自 Bourne shell 以来一直存在于 shell 中。该source命令首先在 C shell 中,然后添加到 Bash。)

这些将脚本读入当前进程。任何环境变量设置都会影响当前进程。例如,您的个人资料可以有效地阅读. $HOME/.profile

请注意,在 $PATH 上的目录中搜索 dotted 命令的文件,但该文件只需要可读,而不是可执行文件。

于 2013-03-04T03:30:50.067 回答
-1

您是否尝试过设置执行文件的权限?

chmod +x 文件名

于 2013-03-04T03:30:32.163 回答