Jak mogę bezpiecznie pobrać wersję ksh ze skryptu ksh?
Ja widziałem następujące rozwiązania :
ksh --versionecho ${.sh.version}echo $KSH_VERSION
Biorąc pod uwagę odpowiednie okoliczności, każda z nich działa poprawnie. Dbam jednak o niedoskonały przypadek.
W szczególności istnieje kilka maszyn, z którymi współpracuję, które mają starsze wersje ksh, które, moim zdaniem, są bardzo pozbawione funkcjonalności. W każdym razie powodem, dla którego chcę sprawdzić wersję (programowo), jest sprawdzenie, czy wersja ksh jest jedną z mniej zdolnych wersji; a jeśli tak, chcę wykonać gałąź z mniej niesamowitym kodem.
Jednak na problematycznych maszynach nieudolność powłoki rozciąga się na sprawdzenie wersji ...
- Jeśli spróbuję
ksh --version, nic nie drukuje i otwiera nową instancjęksh! Jeśli spróbuję
echo ${.sh.version},kshpotraktuje to jako błąd składniowy, którego nie można usunąć2> /dev/null.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitutionOczywiście
echo $KSH_VERSIONwydaje się, że działa dobrze - mam na myśli to, że się nie zawiesi - choć na tych komputerach jest pusty. Również widziałem gdzieś , żeKSH_VERSIONjest ustawiony tylkopdksh.
Pytania:
- Jak mogę bezpiecznie sprawdzić wersję
kshprogramowo? Dla moich celów nie obchodzi mnie, jaki jest rzeczywisty numer wersji, tylko czy jest to przestarzała wersjaksh. - Czy
$KSH_VERSIONwystarczy? Mam na myśli to, że jeśli jest puste, tokshkoniecznie jest nieaktualna wersja? Czy to drugie forum było prawidłowe, że może nie być ustawione nawet dla nowszych wersjiksh? - Czy po prostu w ogóle nie można tego sprawdzić?
PS1do korzystania z tej funkcji. Jednak Old ksh nie obsługuje $()w PS1. Więc jeśli jest to nowoczesna wersja ksh, chcę PS1użyć funkcji, którą stworzyłem; jeśli to stara wersja, używam tylko $PWD.