シンボリックリンクを介して呼び出されると、$ 0には何が含まれますか?

シンボリックリンクを介して呼び出されると、$ 0には何が含まれますか?

シェル・パラメーターには、呼び出し$0プログラムの名前が保持されます。my_commandホームディレクトリにこのコマンドへのシンボリックリンクを作成し、と入力して/usr/local/bin/command1実行する場合./my_commandの値は何ですか$0?誰でも理由を説明できますか?ありがとうございます!

答え1

$0呼び出されたプログラムの名前は保存されませんが、呼び出されたプログラムの名前は保存されます。呼び出しプログラムも同様です./my_command$0./my_command

シンボリックリンクという事実は何の違いもありません。

答え2

内容を含むコマンドライン(またはUNIXではコマンドライン引数の配列)が$0次に渡されます。exec呼び出しプログラムによって呼び出されます。

シンボリックリンクの確認、Shebang処理などは、呼び出し処理の一部としてシステムで実行されますexec

したがって、呼び出し元プログラム(あなたの場合はシェル)がargv/.my_commandあなたの場合)の最初の項目として指定されるものは何でもあります$0

関連情報