Bagaimana saya bisa dengan aman mendapatkan versi ksh dari dalam script ksh?
Saya telah melihat solusi berikut :
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
Dan mengingat keadaan yang tepat, masing-masing berfungsi dengan benar. Namun, saya peduli dengan kasus yang tidak sempurna.
Secara khusus, ada beberapa mesin yang bekerja dengan saya yang memiliki versi ksh yang lebih lama, yang untuk tujuan saya, sangat kurang fungsionalitasnya. Bagaimanapun, alasan saya ingin memeriksa versi (secara terprogram) adalah untuk melihat apakah versi ksh adalah salah satu versi yang kurang mampu; dan jika demikian, saya ingin menjalankan cabang dengan kode yang kurang bagus.
Namun, pada mesin yang bermasalah, ketidakmampuan shell meluas ke memeriksa versi ...
- Jika saya mencoba
ksh --version
, itu tidak mencetak apa-apa dan membuka contoh baruksh
! Jika saya mencoba
echo ${.sh.version}
,ksh
memperlakukan ini sebagai kesalahan sintaks yang tidak dapat diabaikan2> /dev/null
.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
Tentu saja
echo $KSH_VERSION
tampaknya berfungsi dengan baik - maksud saya tidak akan crash - meskipun pada mesin ini kosong. Juga, saya melihat suatu tempat yangKSH_VERSION
hanya ditetapkan olehpdksh
.
Pertanyaan:
- Bagaimana saya bisa memeriksa versi
ksh
program dengan aman? Untuk tujuan saya di sini, saya tidak terlalu peduli apa nomor versi yang sebenarnya, hanya apakah itu versi lamaksh
. - Apakah
$KSH_VERSION
cukup baik? Maksud saya jika itu kosong, maka ituksh
versi yang sudah ketinggalan zaman? Apakah forum lain itu benar sehingga mungkin tidak disetel untuk versi yang lebih baruksh
? - Apakah tidak ada cara untuk memeriksa ini sama sekali?
PS1
untuk menggunakan fungsi ini. Namun, ksh Old tidak mendukung $()
dalam PS1
. Jadi jika ini adalah versi modern ksh, saya ingin PS1
menggunakan fungsi yang saya buat; kalau itu versi lama, saya pakai saja $PWD
.