ksh 스크립트 내에서 ksh 버전을 안전하게 얻으려면 어떻게 해야합니까?
다음과 같은 해결책 을 보았습니다 .
ksh --version
echo ${.sh.version}
echo $KSH_VERSION
올바른 환경에서 이러한 각 작업이 올바르게 작동합니다. 그러나 나는 완벽하지 않은 경우에 관심이 있습니다.
특히, 이전 버전의 ksh를 사용하는 여러 시스템이 있는데, 그 목적 상 기능이 심각하게 부족합니다. 어쨌든, (프로그래밍 방식으로) 버전을 확인하려는 이유는 ksh 버전이 성능이 떨어지는 버전 중 하나인지 확인하는 것입니다. 그렇다면 덜 멋진 코드로 분기를 실행하고 싶습니다.
그러나 문제가있는 컴퓨터에서 쉘의 부적격은 버전 확인으로 확장됩니다 ...
- 시도
ksh --version
하면 아무것도 인쇄되지 않고 새로운 인스턴스가 열립니다ksh
! 시도
echo ${.sh.version}
하면ksh
이것을 버릴 수없는 구문 오류로 취급합니다2> /dev/null
.$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution
물론
echo $KSH_VERSION
제대로 작동하는 것 같습니다 – 충돌하지 않을 것입니다 –이 머신에서는 비어 있습니다. 또한에 의해 설정된 곳 을 보았습니다 .KSH_VERSION
pdksh
질문 :
ksh
프로그래밍 방식으로 버전을 안전하게 확인할 수있는 방법은 무엇입니까? 여기서는 실제 버전 번호가 낡은 버전인지 여부를 실제로 신경 쓰지 않습니다ksh
.- 가
$KSH_VERSION
충분한은? 비어 있다면ksh
반드시 구식 버전입니까? 다른 포럼에서 최신 버전의 경우에도 설정되지 않을 수 있다고 수정ksh
했습니까? - 이것을 전혀 확인할 방법이 없습니까?
PS1
을 사용하도록 설정했습니다 . 그러나 Old ksh는 $()
에서 지원하지 않습니다 PS1
. 최신 버전의 ksh라면 PS1
내가 만든 함수를 사용하고 싶습니다 . 이전 버전이라면 그냥 사용 $PWD
합니다.