关于基础知识的问题:在调整从脚本启动的程序的环境变量时,我最终得到了一些奇怪的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
肯定有合理的解释,我还没想出来。有想法的人吗?
br,Touko
答案 0 :(得分:4)
您应该使用ANT_OPTS=-Xmx512M
代替set ANT_OPTS=-Xmx512M
。
更新:有关set
和here的讨论,请参阅the manual。
答案 1 :(得分:2)
“set”不是Bourne Shell中设置变量的一部分。那应该是
ANT_OPTS=-Xmx512m
export ANT_OPTS