쉘 Solaris ksh를 Red Hat으로 마이그레이션

쉘 Solaris ksh를 Red Hat으로 마이그레이션

Solaris 11.3 서버에서는 수백 개의 쉘 스크립트가 실행되고 있습니다. 시스템 쉘은 ksh93입니다.

$ ls -l /bin/sh
lrwxrwxrwx   1 root     root          13 Apr 12  2018 /bin/sh -> sparcv9/ksh93

모든 스크립트의 #!/bin/ksh상단에는 "she-bang"이 있습니다.

서버는 x86/64에서 실행되는 Red Hat Enterprise Linux로 마이그레이션되고 있습니다. 시스템 셸은 bash이고 ksh93은 RHEL에서 기본적으로 구성되지 않은 것으로 알고 있습니다.

이 문제를 해결하기 위해 RHEL에 ksh93을 설치하고 구성할 수 있다고 가정합니까?

일부 스크립트는 ksh 관련 구문을 사용합니다.

이 과정에 경험이 있는 사람이 있나요?

답변1

귀하의 (내부) RedHat 시스템 관리자가 귀하를 위해 이 작업을 수행할 수 있습니다. 이런 사소한 작업이군요

yum install ksh

시스템 기본 셸과 스크립트를 실행하는 데 사용되는 셸은 동일할 필요가 없습니다. shebang 줄은 주어진 스크립트를 실행하는 데 사용할 인터프리터(어떤 쉘)를 시스템에 알려줍니다.

ksh하지만 스크립트를 설치 했다고 해서 여전히 작동하지 않을 수도 있다는 점을 명심하세요 . 수행하는 작업과 작동 방식에 따라 추가 도구를 설치해야 할 수도 있고, 다른 도구를 사용하려면 완전히 다시 작성해야 할 수도 있습니다.

귀하의 조직에 아직 RH 경험이 없다면 왜 그렇게 빨리 애플리케이션을 RH로 마이그레이션하기 시작했는지 묻고 싶습니다. Linux 기반 배포판은 실제로 Solaris를 대체할 수 없습니다.


#!/bin/sh댓글에는 Solaris에서의 사용법( sh심볼릭 링크가 있는 위치 ksh93)에 대해 묻고 shebang 없이 스크립트에 어떤 일이 발생하는지 묻는 후속 질문이 있습니다 .

첫 번째 경우에는 스크립트를 실행하는 방법에 따라 다릅니다. 라는 스크립트를 고려해보세요 action. sh action(또는 sh /path/to/action)을 실행하면 shshebang 줄에 있는 내용에 관계없이 인터프리터를 사용하게 됩니다. Solaris의 경우 이는 작동 ksh하지만 Linux 기반 시스템에서는 bash, ksh또는 가 될 수도 있습니다 dash. 반면에 스크립트가 실행 가능하고 in에서 $PATH실행하는 경우 action(또는 실행 가능하고 를 사용하는 경우 /path/to/action) shebang 줄이 적용되어 /bin/ksh스크립트를 실행하는 데 사용됩니다.

인터프리터를 정의하는 지시문 없이 스크립트를 실행하는 것은 #!모두 스크립트를 호출하는 데 사용하는 셸에 따라 다릅니다. 권장되지 않습니다.

관련 정보