Ksh sürümünü ksh betiğinden nasıl güvenli bir şekilde alabilirim?
Ben var aşağıdaki çözümleri görüldü :
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
Ve doğru koşullar göz önüne alındığında, bunların her biri doğru çalışır. Ancak, mükemmel olmayan davayı önemsiyorum.
Özellikle, ksh'ın daha eski sürümlerine sahip, birlikte çalıştığım için, işlevlerimde ciddi ölçüde işlevsel olmayan birkaç makine var. Her neyse, sürümü (programlı olarak) kontrol etmek istememin nedeni, ksh sürümünün daha az yetenekli sürümlerden biri olup olmadığını görmek; ve eğer öyleyse, daha az harika kodlu bir şube yürütmek istiyorum.
Ancak, sorunlu makinelerde, kabuğun beceriksizliği sürümü kontrol etmeye uzanıyor ...
- Denersem
ksh --version
, hiçbir şey yazdırmaz ve yeni bir örneğini açarksh
! Eğer denersem
echo ${.sh.version}
, bunuksh
atılamayan bir sözdizimi hatası olarak kabul eder2> /dev/null
.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
Tabii ki
echo $KSH_VERSION
iyi çalışıyor gibi görünüyor - yani çökmeyecek - bu makinelerde boş. Ayrıca, gördüm bir yerlerdeKSH_VERSION
sadece tarafından ayarlanırpdksh
.
Sorular:
ksh
Programlı olarak sürümü güvenli bir şekilde nasıl kontrol edebilirim ? Buradaki amacım için, gerçek sürüm numarasının ne olduğu umurumda değil, sadece eski bir sürümü olsunksh
.- Mı
$KSH_VERSION
yeterince iyi? Yani boşsa,ksh
mutlaka eski bir versiyon mu? Bu diğer forum, daha yeni sürümleri için bile ayarlanamayacağı doğru muyduksh
? - Bunu kontrol etmenin bir yolu yok mu?
PS1
bu işlevi kullanmak için ayarladım . Ancak, Eski Ksh desteklemez $()
içinde PS1
. Eğer ksh'ın modern bir versiyonu ise, PS1
yarattığım fonksiyonu kullanmak istiyorum ; eski sürüm ise, sadece kullanıyorum $PWD
.