有人可以告訴我如何找到我的機器上KornShell(ksh)的路徑名,然後更改當前所有shell腳本(.sh)中的解釋器行目錄顯示ksh的不同路徑名?UNIX中,更改所有shell腳本中的解釋器行
回答
這會給你的路徑,Korn shell中:
which ksh
,這將在所有shell腳本替換家當:
sed -i 's/#!\/bin\/bash/#!insert escaped ksh path here/' *.sh
在每個文件的第一行將這個(家當線):
#!/usr/bin/env ksh
如果需要更換,你可以使用SED/AWK: find -name '*.sh' | xargs perl -pi -e "s{^#!/usr/bin/sh}{#!/usr/bin/env ksh}"
什麼是那個流浪'-o'? – 2010-11-17 17:50:41
刪除它。它來自我發現的那個尋找.pl和.cgi文件的snippit。感謝您的支持。 – 2010-11-17 18:20:50
找出ksh的生活:
whence -a ksh
改變所有shell腳本在當前目錄使用KSH:
這將匹配sh
或bash
並保留任何後來出現的空格(和參數)。它只作用於第一行,因此它不會觸及文件後面可能出現的類似行。
替換ksh可執行文件的實際位置或使用/usr/bin/env ksh
。
如果要備份更改的文件,請使用sed -i .bak
。
這個命令會找到您的UNIX環境Korn shell中可執行文件:
which ksh
如果沒有返回輸出,那麼Korn shell的缺失。 (至少在您的環境路徑中找不到)您可以從KornShell站點獲取它或通過軟件包管理器系統安裝它。
爲了替換所有shell腳本解釋器行(* .SH),你可以運行這樣的事情:
sed -i "s/^#\!.*$/#\!\/bin\/ksh/" *.sh
的-i
選項是在地方編輯文件。 (警告:首先不用-i
測試此命令,以避免文件修改。)
帶引號的參數是匹配所有以「#!」開頭的行的模式。並用「#!/ bin/ksh」替換它們。 (請注意,某些特殊字符在之前需要使用「\」進行轉義。)如果它不完全是您正在尋找的替換品,您可能需要自定義此參數。
不知何故,我收到一個錯誤:非法變量名稱。但是,這個作品: 'sed -i's /^#\!.*$/#!\ bin \/ksh /'* .sh' – danger89 2017-02-16 18:04:08
在我的機器上只有這個工程 sed -i "s/^#\!.*/#\!\/usr\/bin\/perl/" *.sh
Everyother引發一個錯誤。
- 1. 更改Python解釋器中間腳本
- 2. shell腳本中的Unix substr?
- 3. UNIX腳本中的shell腳本錯誤
- 4. 更改解釋bash腳本
- 5. 簡單瞭解UNIX和UNIX shell腳本!
- 6. Unix shell腳本
- 7. c shell腳本解釋
- 8. 解釋這個shell腳本
- 9. 沒有從UNIX shell腳本
- 10. UNIX shell腳本:UDV
- 11. 從文件中提取未在shell腳本中註釋掉的所有行
- 12. unix shell腳本中的SQL查詢
- 13. 或Shell腳本中的條件 - Unix
- 14. shell腳本在unix中逐行讀取文件並更新文件中的行
- 15. Unix腳本更改目錄
- 16. Unix shell腳本找出腳本文件所在的目錄?
- 17. 如何更改unix中的shell
- 18. 是否解釋所有腳本語言?
- 19. ## * /在UNIX Shell腳本中使用
- 20. 在shell腳本中觸發UNIX序列
- 21. 在Unix Shell腳本中排序輸入
- 22. Unix - 在shell腳本中排序
- 23. Unix shell腳本 - 打印範圍內的所有可用變量
- 24. bash腳本中的換行解釋
- 25. 從Unix shell腳本運行MATLAB
- 26. 無法運行UNIX Shell腳本
- 27. 使shell腳本更改腳本位置
- 28. 關於Unix shell腳本
- 29. Unix Shell腳本函數
- 30. unix shell腳本錯誤
值得注意的是他需要跳過他插入的字符串。更好的是,我想最好使用如下形式:'echo 1/23 | sed's ^/^ 2 ^''。另外,你不需要'/ g',因爲它希望每行只有一個...:) – 2010-11-17 14:55:14