Wie kann ich die Version von ksh sicher aus einem ksh-Skript herunterladen?
Ich habe die folgenden Lösungen gesehen :
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
Und unter den richtigen Umständen funktioniert jede dieser Funktionen ordnungsgemäß. Ich interessiere mich jedoch für den nicht perfekten Fall.
Insbesondere gibt es mehrere Maschinen, mit denen ich arbeite und die ältere Versionen von ksh haben, denen für meine Zwecke die Funktionalität stark fehlt. Wie auch immer, ich möchte die Version (programmgesteuert) überprüfen, um festzustellen, ob die ksh-Version eine der weniger leistungsfähigen Versionen ist. und wenn ja, möchte ich einen Zweig mit weniger fantastischem Code ausführen.
Auf den problematischen Rechnern reicht die Unfähigkeit der Shell jedoch aus, die Version zu überprüfen ...
- Wenn ich es versuche
ksh --version
, druckt es nichts und öffnet eine neue Instanz vonksh
! Wenn ich es versuche
echo ${.sh.version}
, wirdksh
dies als Syntaxfehler behandelt, der nicht verworfen werden kann2> /dev/null
.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
Natürlich
echo $KSH_VERSION
scheint es gut zu funktionieren - ich meine, es wird nicht abstürzen - obwohl es auf diesen Maschinen leer ist. Auch habe ich irgendwo gesehen, dassKSH_VERSION
nur durch gesetzt wirdpdksh
.
Fragen:
- Wie kann ich die Version von sicher
ksh
programmgesteuert überprüfen ? Für meine Zwecke hier ist es mir eigentlich egal, wie die tatsächliche Versionsnummer lautet, nur ob es sich um eine veraltete Version von handeltksh
. - Ist
$KSH_VERSION
gut genug Ich meine, wenn es leer ist, ist es dannksh
notwendigerweise eine veraltete Version? War das andere Forum korrekt, dass es möglicherweise nicht einmal für neuere Versionen von eingestellt wurdeksh
? - Gibt es überhaupt keine Möglichkeit, dies zu überprüfen?
PS1
Verwendung dieser Funktion eingerichtet. Old ksh unterstützt jedoch nicht $()
in PS1
. Wenn es sich also um eine moderne Version von ksh handelt, möchte ich die PS1
von mir erstellte Funktion verwenden. wenn es die alte version ist, benutze ich eben $PWD
.