Linux 使用点运行shell脚本为什么;echo$0“;打印bash
使用点运行shell脚本为什么“echo$0”打印-bash 假设我有下面的一段代码Linux 使用点运行shell脚本为什么;echo$0“;打印bash,linux,bash,shell,Linux,Bash,Shell,使用点运行shell脚本为什么“echo$0”打印-bash 假设我有下面的一段代码 #!/usr/bin/env bash echo $0 我使用点(.) 输出: -bash 但是, 如果我没有圆点就跑 输出是路径名与脚本名的组合,正如我所期望的那样。在现有解释器中运行脚本,而不是在新解释器中运行脚本,这意味着$0没有正常初始化。使用运行脚本时,本质上,就像您直接在shell命令行上键入脚本的内容一样。因此,echo“$0”将准确地输出您刚刚输入的内容 像$0这样的特殊变量只有在启动一个新
#!/usr/bin/env bash
echo $0
我使用点(.)
输出:
-bash
但是,
如果我没有圆点就跑
输出是路径名与脚本名的组合,正如我所期望的那样。在现有解释器中运行脚本,而不是在新解释器中运行脚本,这意味着
$0
没有正常初始化。使用运行脚本时,本质上,就像您直接在shell命令行上键入脚本的内容一样。因此,echo“$0”
将准确地输出您刚刚输入的内容
像$0
这样的特殊变量只有在启动一个新shell时才会初始化,而
不能初始化,否则它就没有多大用处
但是,如果您使用的是bash版本3或更高版本,则始终可以找到当前正在执行的文件,因此:
echo "$BASH_SOURCE"
无论如何调用该文件,它都有效。
是源代码的别名:
不要将此命令用于运行脚本,它是为导入源文件而创建的。
您可以在这里看到:ABS只是一个普通的资源。如果要影响当前环境,应使用
或源代码运行脚本。可以将其视为从正在查找的文件中复制/粘贴代码。在这种情况下,#/shebang
只是一个注释,没有任何东西可以修改$0
。
echo "$BASH_SOURCE"