Ekspansi variabel ${parameter:-word}akan menggunakan nilai $parameterjika disetel dan non-null (bukan string kosong), jika tidak maka akan menggunakan string word.
Menghilangkan :tidak akan menguji apakah nilainya kosong, hanya apakah itu tidak disetel atau tidak.
Ini berarti bahwa ${PS1-}akan memperluas ke nilai $PS1jika diatur, tetapi ke string kosong jika itu kosong atau tidak disetel. Dalam hal ini, ini adalah persis sama seperti ${PS1:-}sebagai string setelah -juga kosong.
Perbedaan antara "${PS1-}"dan "$PS1"halus, seperti yang dicatat oleh @Rakesh Sharma: keduanya akan diperluas ke nilai $PS1, atau ke string kosong jika tidak disetel. Pengecualiannya adalah ketika set -usedang aktif, dalam hal ini memperluas variabel yang tidak disetel akan menyebabkan kesalahan . Nilai default (kosong) yang diatur oleh "${PS1-}"circumvents this, memperluas unset PS1ke string kosong tanpa kesalahan.
Ini adalah sintaks standar ( berasal dari shell Bourne di akhir 70-an ), seperti halnya beberapa ekspansi serupa lainnya.