$PROGRAM_NAME
$0

包含正在執行的程式名稱。

在某些(但並非全部)作業系統上,指定給 $0 會修改 ps 程式所看到的參數區域。在某些平台上,您可能必須使用特殊 ps 選項或不同的 ps 才能看到變更。修改 $0 作為指示目前程式狀態的方式比用於隱藏您正在執行的程式更有用。

請注意,$0 的最大長度有特定於平台的限制。在最極端的情況下,它可能被限制在原始 $0 佔用的空間中。

在某些平台上,可能會有任意數量的填補,例如空格字元,在修改後的名稱後,如 ps 所示。在某些平台上,此填補可能會一直延伸到參數區域的原始長度,無論您執行什麼動作(例如 Linux 2.2 就是如此)。

BSD 使用者注意事項:設定 $0 並不會完全從 ps(1) 輸出中移除「perl」。例如,將 $0 設定為 "foobar" 可能會導致 "perl: foobar (perl)""perl: " 前綴和 " (perl)" 後綴是否顯示取決於您的確切 BSD 變體和版本)。這是作業系統功能,Perl 無法解決。

在多執行緒腳本中,Perl 會協調執行緒,以便任何執行緒都可以修改其 $0 的副本,而變更會對 ps(1) 可見(假設作業系統配合)。請注意,其他執行緒的 $0 檢視不會變更,因為它們有自己的副本。

如果程式已透過 -e-E 開關提供給 perl,則 $0 將包含字串 "-e"

在 perl v5.14.0 的 Linux 上,除了透過 argv[0] 變更 POSIX 名稱外,還會使用 prctl(2) 設定舊有程序名稱,這是 perl 自版本 4.000 以來所執行的動作。現在,讀取舊有程序名稱的系統公用程式,例如 ps、top 和 killall,將識別您在指定 $0 時設定的名稱。您提供的字串將在 16 個位元組處切斷,這是 Linux 強制的限制。

寬字元在 $0 值中無效。不過,出於歷史原因,Perl 會接受它們並將它們編碼為 UTF-8。發生這種情況時,會觸發寬字元警告。

助記符:與 shksh 相同。