[mylinux ~]$cat test.sh
echo "a"
echo "${0}"
但是,当我采购它时,结果却完全不同:
[mylinux ~]$sh test.sh
a
test.sh
[mylinux ~]$source test.sh
array : x, y
0,x
1,x
我无法理解源test.sh的结果,并且在我更改test.sh的名称后,结果也发生了变化:
[mylinux ~]$mv test.sh a.sh
[mylinux ~]$source a.sh
a
-bash
我怎么能理解这种现象?
BTW,第二个奇怪的结果只出现在我的一个远程linux会话中,在我的本地linux系统中,一切正常.所以肯定它与环境有关,我能做些什么才能找到根本原因?
我发现了真正的问题,即即使它们不是这样的文件test.sh,我甚至可以执行source test.sh来获得结果:
[mylinux ~]$rm test.sh
[mylinux ~]$source test.sh
array : x, y
0,x
1,x
这对我来说很奇怪……
解决方法:
如果参数不包含任何/字符,source会对其参数执行路径查找,因此当sh test.sh和source ./test.sh保证从当前目录中的文件运行代码时,source test.sh可能会完全运行不同的脚本. source test.sh只会在你的PATH中找不到test.sh时运行./test.sh.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。