¿Cómo puedo obtener la versión de ksh de forma segura desde un script ksh?
He visto las siguientes soluciones :
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
Y dadas las circunstancias correctas, cada uno de estos funciona correctamente. Sin embargo, me importa el caso no perfecto.
Específicamente, hay varias máquinas con las que trabajo que tienen versiones anteriores de ksh que, para mis propósitos, carecen de funcionalidad. De todos modos, la razón por la que quiero verificar la versión (programáticamente) es para ver si la versión ksh es una de las versiones menos capaces; y si es así, quiero ejecutar una rama con un código menos sorprendente.
Sin embargo, en las máquinas problemáticas, la ineptitud del shell se extiende hasta verificar la versión ...
- Si lo intento
ksh --version
, no imprime nada y abre una nueva instancia deksh
! Si lo intento
echo ${.sh.version}
,ksh
trata esto como un error de sintaxis con el que no se puede descartar2> /dev/null
.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
Por supuesto,
echo $KSH_VERSION
parece funcionar bien, quiero decir que no se bloqueará, aunque en estas máquinas está en blanco. Además, vi en algún lugar queKSH_VERSION
se establece solo porpdksh
.
Preguntas:
- ¿Cómo puedo verificar la versión de forma segura mediante
ksh
programación? Para mis propósitos aquí, realmente no me importa cuál es el número de versión real, solo si es una versión desactualizadaksh
. - Es
$KSH_VERSION
lo suficientemente bueno? Quiero decir, si está en blanco, ¿esksh
necesariamente una versión desactualizada? ¿Era correcto ese otro foro en el que podría no estar configurado incluso para versiones más recientesksh
? - ¿No hay forma de verificar esto?
PS1
para usar esta función. Sin embargo, Old ksh no es compatible $()
con PS1
. Entonces, si es una versión moderna de ksh, quiero PS1
usar la función que creé; si es la versión anterior, yo solo uso $PWD
.