假设我有一个my.sh
放置在其中的脚本/var/www
,并将该目录添加到PATH
环境变量中。现在我可以./my.sh
在系统中的任何地方运行。在脚本内部,$0
等于/var/www/my.sh
。它是如何构建的?它只是PATH
加上脚本名称中的路径吗?
答案1
$0
是正在运行的进程的名称。
./script.sh
因此,当您使用将要运行的进程调用脚本时/bin/bash ./script.sh
,它将$0
返回./script.sh
,因此这里它使用相对路径而不是绝对路径调用脚本,但是,当您将脚本放入PATH
查看内部的目录中时,调用将be 带有绝对路径,而 will 的返回$0
是/usr/bin/script.sh
因为该过程是/bin/bash /usr/bin/script.sh
答案2
$0
不关心你的$PATH
,它是 Bash 的一个特殊参数。
$0 扩展为 shell 或 shell 脚本的名称。这是在 shell 初始化时设置的。如果使用命令文件调用 bash,则 $0 将设置为该文件的名称。常用于显示脚本使用信息
阅读更多关于$0
这里。
答案3
跑步:
PATH=`/var/www/my.sh`
echo $PATH
当你运行脚本时,结果将是
/var/www/my.sh