我管理大量的服務器A上每個腳本始於行shell(KSH)腳本......如何標準化shell腳本標題#!在不同的主機上?
#!/usr/bin/ksh
當我部署到機器B,C和DI經常需要使用不同如/ bin/ksh,/ usr/local/bin/ksh或甚至/ usr/dt/bin/ksh。假設我無法安裝ksh的新版本,我無法在任何受保護的目錄(例如/ usr/local/bin)中創建鏈接。目前我有一個修改所有腳本的sed腳本,但我不想這樣做。我想標準化標題,以便不再需要從服務器更改爲服務器。我不介意使用類似
#!~/ksh
並創建一個鏈接,是每一個服務器上,但我曾與發現家裏使用RSH當在過去使用「〜」的問題(也許是有人SSH)來調用一個腳本(特別是我認爲的AIX)。另一種選擇可能是建立在我家目錄的鏈接,並確保它是第一個在我的道路,並簡單地用
#!ksh
尋找一個好的解決方案。謝謝。
更新8/26/11 - 這是我想出的解決方案。安裝腳本查找安裝在服務器上的各種版本的ksh,然後將其中一個ksh 93程序複製到/ tmp/ksh93。框架中的腳本都引用#!/ tmp/ksh93,並且不需要從一臺服務器更改爲另一臺服務器。該腳本還設置了一些變量,以便如果文件每次都從/ tmp中刪除,則在下一次計劃任務運行時立即恢復該文件,這是每分鐘至少一次。
把任何東西永久放在'/ tmp'中是非常非正統的,更不用說容易失敗,除非你安排在重新啓動時重新創建文件。 – 2011-08-27 04:43:50