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 --versionecho ${.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}, bunukshatılamayan bir sözdizimi hatası olarak kabul eder2> /dev/null.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitutionTabii ki
echo $KSH_VERSIONiyi çalışıyor gibi görünüyor - yani çökmeyecek - bu makinelerde boş. Ayrıca, gördüm bir yerlerdeKSH_VERSIONsadece tarafından ayarlanırpdksh.
Sorular:
kshProgramlı 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_VERSIONyeterince iyi? Yani boşsa,kshmutlaka 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?
PS1bu işlevi kullanmak için ayarladım . Ancak, Eski Ksh desteklemez $()içinde PS1. Eğer ksh'ın modern bir versiyonu ise, PS1yarattığım fonksiyonu kullanmak istiyorum ; eski sürüm ise, sadece kullanıyorum $PWD.