Como posso obter com segurança a versão do ksh de um script ksh?
ksh --versionecho ${.sh.version}echo $KSH_VERSION
E, dadas as circunstâncias corretas, cada uma delas funciona corretamente. No entanto, eu me preocupo com o caso não perfeito.
Especificamente, existem várias máquinas com as quais trabalho que possuem versões mais antigas do ksh que, para meus propósitos, estão com uma falta grave de funcionalidade. De qualquer forma, o motivo pelo qual desejo verificar a versão (programaticamente) é ver se a versão ksh é uma das versões menos capazes; e, se assim for, quero executar um ramo com código menos impressionante.
No entanto, nas máquinas problemáticas, a inaptidão do shell se estende à verificação da versão ...
- Se eu tentar
ksh --version, ele não imprime nada e abre uma nova instância doksh! Se eu tentar
echo ${.sh.version},kshtrata isso como um erro de sintaxe que não pode ser descartado2> /dev/null.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitutionÉ claro que
echo $KSH_VERSIONparece funcionar bem - quero dizer, não falhará - embora nessas máquinas esteja em branco. Além disso, eu vi em algum lugar queKSH_VERSIONé definido apenas porpdksh.
Questões:
- Como posso verificar com segurança a versão do
kshprogramaticamente? Para meus propósitos aqui, eu realmente não me importo com o número da versão real, apenas se é uma versão desatualizada doksh. - É
$KSH_VERSIONbom o suficiente? Quero dizer, se estiver em branco, então ékshnecessariamente uma versão desatualizada? Esse outro fórum estava correto e pode não ser definido mesmo para versões mais recentesksh? - Não há como verificar isso?
PS1para usar essa função. No entanto, ksh Velho não suporta $()no PS1. Portanto, se é uma versão moderna do ksh, quero PS1usar a função que criei; se é a versão antiga, eu uso apenas $PWD.