我正在寻找“。”之间的区别。和“源”内置命令和一些源(例如,在本讨论中,以及bash 手册页)表明它们是相同的。
但是,由于环境变量的问题,我进行了测试。我创建了一个testenv.sh
包含以下内容的文件:
#!/bin/bash
echo $MY_VAR
Run Code Online (Sandbox Code Playgroud)
在命令提示符下,我执行了以下操作:
> chmod +x testenv.sh
> MY_VAR=12345
> ./testenv.sh
> source testenv.sh
12345
> MY_VAR=12345 ./testenv.sh
12345
Run Code Online (Sandbox Code Playgroud)
[注意第一种形式返回一个空字符串]
所以,这个小实验表明,有是毕竟有差别,其中的“源”命令,孩子的环境继承所有从父之一,这里的变量“” 它不是。
我是否遗漏了什么,或者这是bash的未记录/不推荐使用的功能?
[GNU bash,版本 4.1.5(1)-release (x86_64-pc-linux-gnu)]