2

关于基础的问题:在为从脚本启动的程序调整环境变量时,我最终对 sh 产生了一些奇怪的行为(这似乎实际上与 bash 相关联):变量设置似乎与命令行参数混淆了。

有人可以解释为什么会这样吗?

一个简单的脚本:

#! /bin/sh

# Messes with $1 ??
set ANT_OPTS=-Xmx512M
export ANT_OPTS

# Works
# export ANT_OPTS=-Xmx512M

echo "0 = $0"
echo "1 = $1"

当我使用上面的选项(set + export)运行它时,结果如下:

$ ./test.sh foo
0 = ./test.sh
1 = ANT_OPTS=-Xmx512M

但是使用较低的替代方案(直接出口),结果正如我所料:

$ ./test.sh foo
0 = ./test.sh
1 = foo

肯定有合乎逻辑的解释,只是我还没有弄清楚。有人有想法吗?

兄弟,图科

4

2 回答 2

5

您应该只使用ANT_OPTS=-Xmx512M而不是set ANT_OPTS=-Xmx512M.

更新:有关和手册的讨论,请参见此处set

于 2010-05-26T13:43:39.073 回答
2

“set”不是在 Bourne Shell 中设置变量的一部分。那应该是

ANT_OPTS=-Xmx512m
export ANT_OPTS 
于 2010-05-26T13:44:12.850 回答