シェル・パラメーターには、呼び出し$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
。