![쉘 Solaris ksh를 Red Hat으로 마이그레이션](https://linux55.com/image/190148/%EC%89%98%20Solaris%20ksh%EB%A5%BC%20Red%20Hat%EC%9C%BC%EB%A1%9C%20%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98.png)
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
)을 실행하면 sh
shebang 줄에 있는 내용에 관계없이 인터프리터를 사용하게 됩니다. Solaris의 경우 이는 작동 ksh
하지만 Linux 기반 시스템에서는 bash
, ksh
또는 가 될 수도 있습니다 dash
. 반면에 스크립트가 실행 가능하고 in에서 $PATH
실행하는 경우 action
(또는 실행 가능하고 를 사용하는 경우 /path/to/action
) shebang 줄이 적용되어 /bin/ksh
스크립트를 실행하는 데 사용됩니다.
인터프리터를 정의하는 지시문 없이 스크립트를 실행하는 것은 #!
모두 스크립트를 호출하는 데 사용하는 셸에 따라 다릅니다. 권장되지 않습니다.