解決shell無法執(zhí)行的問題
原因1_換行符錯誤導致
摘要:
Linux 系統(tǒng),shell 腳本文件內(nèi),換行符為 CRLF 導致的,轉(zhuǎn)換為 LF 換行,即可正常運行。
在Notepad++軟件上,視圖–顯示符號–顯示行尾符,可看到二者差異,
如下圖所示:
轉(zhuǎn)換方法1:Windows 下使用 notepad++
編輯–文檔格式轉(zhuǎn)換–轉(zhuǎn)為 Unix(LF)
轉(zhuǎn)換方法2:Linux 下使用 sed 命令
#另存模式 sed -e 's,^M,,g' old.sh > new.sh
#覆蓋模式 sed -i 's,^M,,g' old.sh
注意 ^M
的輸入方式為:按住Ctrl,按下V,松開V,按下M,松開。
- 不是shift+6,再按M
- 不是shift+6,再按M
- 不是shift+6,再按M
剖析問題來源
- 該 shell 腳本文件在 Windows 系統(tǒng)上創(chuàng)建,或經(jīng)過 Windows 系統(tǒng)另存;
- 該 shell 腳本通過 git 下載,但 git 配置了不自動轉(zhuǎn)換格式;
- 該 shell 腳本由 Windows 習慣的程序生成。
原因2_執(zhí)行權(quán)限導致
摘要:
shell 腳本由于種種原因,不具備執(zhí)行的權(quán)限,權(quán)限問題包括 3 個方面:
- 問題1:缺少 shell 解析器
- 問題2:shell 文件本文的權(quán)限
- 問題3:操作系統(tǒng)對 shell 腳本執(zhí)行的管理
問題1解決方法
這個問題的排查方法可以用命令 sh xxx.sh
來測試,如果手動指定解析器,可以運行腳本的話,那么屬于缺少shell解析器的問題,如果仍然無法運行腳本,則不屬于問題1。
在 shell 文件開頭,添加如下1行代碼:
#!/bin/bash
問題2解決方法
通過chmod命令解決,如:
chmod a+x xxx.sh
問題3解決方法
在某些安全性較高的Linux發(fā)行版系統(tǒng)中,系統(tǒng)不允許未認證的程序執(zhí)行,包括腳本。
可嘗試,通過系統(tǒng)設置、安全中心等配置,調(diào)整安全級別,使其能夠運行。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Centos7.0安裝ceph(JEWEL)及以上版本的實例解析
這篇文章主要介紹了Centos7.0安裝ceph(JEWEL)及以上版本的實例解析,需要的朋友可以參考下2018-02-02linux掛載新磁盤后原數(shù)據(jù)文件不見的解決辦法
linux掛載新磁盤后原數(shù)據(jù)文件不見了,丟失了嗎,沒有,這篇文章就教你找回解決辦法,文章中有詳細的操作步驟,有不會找的小伙伴可以參考閱讀本文2023-08-08linux文件上傳,給文件或目錄添加apache權(quán)限的方法
下面小編就為大家?guī)硪黄猯inux文件上傳,給文件或目錄添加apache權(quán)限的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11