shell$0
参数保存调用程序的名称。如果您my_command
在主目录中创建一个指向该命令的符号链接/usr/local/bin/command1
,并通过键入 来执行它./my_command
,则 的值是多少$0
?任何人都可以解释为什么吗?谢谢!
答案1
$0
不保存调用程序的名称,而是保存被调用程序的名称。调用的程序也是./my_command
如此。$0
./my_command
事实上它是一个符号链接并没有什么区别。
答案2
命令行(或者更确切地说,在 UNIX 中,命令行参数数组),包括将成为 的内容$0
,被传递给exec
由调用程序调用。
符号链接解析、shebang 处理等仅在此之后由系统完成,作为处理调用的一部分exec
。
因此,无论调用程序(在您的情况下为 shell)指定为argv
(/.my_command
在您的情况下)中的第一项,都会变成$0
.