通过符号链接调用时 $0 包含什么?

通过符号链接调用时 $0 包含什么?

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.

相关内容