將 shell Solaris ksh 遷移到 Red Hat
我們在 Solaris 11.3 伺服器上執行了數百個 shell 腳本。系統外殼是 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,我知道系統 shell 是 bash,並且預設情況下未在 RHEL 上配置 ksh93。
我假設可以在 RHEL 上安裝和配置 ksh93 來幫助解決這個問題?
一些腳本使用 ksh 特定的語法。
有沒有人有這個過程的經驗?
您的(內部)RedHat 系統管理員將能夠為您執行此操作。這是一個微不足道的操作,像這樣
yum install ksh
系統預設 shell 和用於執行腳本的 shell 不必相同。shebang 行告訴您的系統使用哪個解釋器(哪個 shell)來執行給定的腳本。
但是請記住,僅僅因為您已經
ksh
安裝了腳本可能仍然無法正常工作。根據他們所做的事情以及他們如何做,他們可能需要安裝額外的工具,或者您甚至可能需要完全重寫它們以使用不同的工具。如果您的組織還沒有使用 RH 的經驗,那麼我會問您為什麼這麼快就開始向它遷移應用程序。所有基於 Linux 的發行版都不是 Solaris 的真正替代品。
評論中有一個後續問題詢問
#!/bin/sh
在 Solaris 上的使用(sh
符號連結到哪裡ksh93
),並且還詢問沒有 shebang 的腳本會發生什麼。在第一種情況下,這取決於您如何執行腳本。考慮一個名為
action
. 如果您執行sh action
(或sh /path/to/action
),那麼sh
無論 shebang 行上有什麼內容,您都將使用解釋器。對於 Solaris,這是有效ksh
的,但在基於 Linux 的系統上,它可能是bash
,,ksh
甚至是dash
。另一方面,如果您的腳本是可執行的並且在 中$PATH
,並且您將其作為action
(或者它是可執行的並且您使用/path/to/action
)執行,那麼 shebang 行將生效並/bin/ksh
用於執行腳本。至於在沒有
#!
定義解釋器的指令的情況下執行腳本,它完全取決於您用來呼叫腳本的 shell。不建議。