解決shell無(wú)法執(zhí)行的問(wèn)題
原因1_換行符錯(cuò)誤導(dǎo)致
摘要:
Linux 系統(tǒng),shell 腳本文件內(nèi),換行符為 CRLF 導(dǎo)致的,轉(zhuǎn)換為 LF 換行,即可正常運(yùn)行。
在Notepad++軟件上,視圖–顯示符號(hào)–顯示行尾符,可看到二者差異,
如下圖所示:
轉(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,松開(kāi)V,按下M,松開(kāi)。
- 不是shift+6,再按M
- 不是shift+6,再按M
- 不是shift+6,再按M
剖析問(wèn)題來(lái)源
- 該 shell 腳本文件在 Windows 系統(tǒng)上創(chuàng)建,或經(jīng)過(guò) Windows 系統(tǒng)另存;
- 該 shell 腳本通過(guò) git 下載,但 git 配置了不自動(dòng)轉(zhuǎn)換格式;
- 該 shell 腳本由 Windows 習(xí)慣的程序生成。
原因2_執(zhí)行權(quán)限導(dǎo)致
摘要:
shell 腳本由于種種原因,不具備執(zhí)行的權(quán)限,權(quán)限問(wèn)題包括 3 個(gè)方面:
- 問(wèn)題1:缺少 shell 解析器
- 問(wèn)題2:shell 文件本文的權(quán)限
- 問(wèn)題3:操作系統(tǒng)對(duì) shell 腳本執(zhí)行的管理
問(wèn)題1解決方法
這個(gè)問(wèn)題的排查方法可以用命令 sh xxx.sh
來(lái)測(cè)試,如果手動(dòng)指定解析器,可以運(yùn)行腳本的話(huà),那么屬于缺少shell解析器的問(wèn)題,如果仍然無(wú)法運(yùn)行腳本,則不屬于問(wèn)題1。
在 shell 文件開(kāi)頭,添加如下1行代碼:
#!/bin/bash
問(wèn)題2解決方法
通過(guò)chmod命令解決,如:
chmod a+x xxx.sh
問(wèn)題3解決方法
在某些安全性較高的Linux發(fā)行版系統(tǒng)中,系統(tǒng)不允許未認(rèn)證的程序執(zhí)行,包括腳本。
可嘗試,通過(guò)系統(tǒng)設(shè)置、安全中心等配置,調(diào)整安全級(jí)別,使其能夠運(yùn)行。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS6.4 下安裝SVN的詳細(xì)教程(超詳細(xì))
這篇文章主要介紹了CentOS6.4 下安裝SVN的詳細(xì)教程,在安裝之前需要檢查是否已經(jīng)安裝過(guò)了,然后使用yum install subversion安裝,具體操作詳細(xì)過(guò)程請(qǐng)參考本文2016-10-10Centos7.0安裝ceph(JEWEL)及以上版本的實(shí)例解析
這篇文章主要介紹了Centos7.0安裝ceph(JEWEL)及以上版本的實(shí)例解析,需要的朋友可以參考下2018-02-02linux掛載新磁盤(pán)后原數(shù)據(jù)文件不見(jiàn)的解決辦法
linux掛載新磁盤(pán)后原數(shù)據(jù)文件不見(jiàn)了,丟失了嗎,沒(méi)有,這篇文章就教你找回解決辦法,文章中有詳細(xì)的操作步驟,有不會(huì)找的小伙伴可以參考閱讀本文2023-08-08linux文件上傳,給文件或目錄添加apache權(quán)限的方法
下面小編就為大家?guī)?lái)一篇linux文件上傳,給文件或目錄添加apache權(quán)限的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11vscode遠(yuǎn)程免密登入Linux服務(wù)器的配置方法
這篇文章主要介紹了配置vscode遠(yuǎn)程免密登入Linux服務(wù)器的操作方法,主要包括windows端操作和linux服務(wù)端操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06詳解如何在 CentOS7.0 上搭建DNS 服務(wù)器
BIND也叫做NAMED,是現(xiàn)今互聯(lián)網(wǎng)上使用最為廣泛的DNS 服務(wù)器程序,本篇文章主要介紹了如何在 CentOS7.0 上搭建DNS 服務(wù)器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05LiteSpeed服務(wù)器用htaccess的防盜鏈代碼
最近換到hawkhost,他們用的是LiteSpeed Webserver作為HTTP服務(wù)器軟件,而不是Apache,以前使用的htaccess在這里不生效。2010-08-08