liunx - 麒麟系統(tǒng)v10 SP1 執(zhí)行腳本文件

一、在麒麟系統(tǒng)中,如果腳本中使用 docker 命令需要輸入密碼,通常是因?yàn)楫?dāng)前用戶沒有足夠的權(quán)限。

推薦方案:將用戶加入 docker 用戶組(永久解決)
# 1. 創(chuàng)建 docker 用戶組(如果不存在)
sudo groupadd docker

# 2. 將當(dāng)前用戶加入 docker 組
sudo usermod -aG docker $USER

# 3. 更新用戶組(立即生效)
newgrp docker

# 4. 重啟電腦  驗(yàn)證(無需 sudo 直接運(yùn)行)
docker ps

#******************
# 查看當(dāng)前用戶所屬組
groups

# 確認(rèn) docker 組是否存在
getent group docker

# 檢查用戶是否在 docker 組中
id -nG | grep docker

原理:Docker 安裝時(shí)創(chuàng)建 docker 用戶組,組成員可直接操作 Docker 守護(hù)進(jìn)程。

臨時(shí)方案:配置 sudoers 免密碼(特定命令)

沒有驗(yàn)證過

# 1. 安全編輯 sudoers 文件
sudo visudo

# 2. 添加以下內(nèi)容(替換 your_username)
your_username ALL=(ALL) NOPASSWD: /usr/bin/docker

# 3. 腳本中這樣使用
sudo docker ps

二、在liunx 中執(zhí)行 腳本.sh文件方法

右鍵--打開終端

 # 添加可執(zhí)行權(quán)限
 chmod +x 腳本.sh 
 ./腳本.sh

在麒麟系統(tǒng)中執(zhí)行 .sh 腳本時(shí)提示 “未找到命令”,通常由以下原因?qū)е?/p>

1. 文件編碼或換行符問題
現(xiàn)象

腳本在Windows編輯后換行符為 CRLF,導(dǎo)致Linux無法識別。

解決
sed -i 's/\r$//' 腳本.sh # 清除Windows換行符

三、 linux/麒麟系統(tǒng)中執(zhí)行腳本報(bào)錯(cuò) $'\r':未找到命令

這個(gè)錯(cuò)誤通常是因?yàn)槟愕?Shell腳本(.sh文件)是在Windows環(huán)境下編輯的,導(dǎo)致?lián)Q行符是 \r\n(CRLF),而Linux/麒麟系統(tǒng)只識別 \n(LF)。因此,\r 被當(dāng)作命令的一部分,導(dǎo)致 $'\r':未找到命令 錯(cuò)誤。

解決方法

1. 使用 dos2unix 轉(zhuǎn)換文件格式(推薦)

bashCopy Code

sudo apt install dos2unix # 銀河麒麟(Debian系) 或 sudo yum install dos2unix # 中標(biāo)麒麟(RedHat系) dos2unix 腳本.sh # 轉(zhuǎn)換文件格式 chmod +x 腳本.sh # 確保腳本可執(zhí)行 ./腳本.sh # 重新運(yùn)行

2. 手動(dòng)刪除 \r 換行符
sed -i 's/\r$//' 腳本.sh   # 刪除所有CRLF換行符 chmod +x 腳本.sh ./腳本.sh
3. 用 vimnano 重新保存文件
vim 腳本.sh
  • vim 里輸入 :set ff=unix,然后 :wq 保存退出。
預(yù)防措施(未來避免問題)
1. 在 Windows 上使用合適的編輯器
  • VS Code:右下角切換 CRLF → LF:
    • 點(diǎn)擊狀態(tài)欄的 CRLF → 選擇 LF。
  • Notepad++:
    編輯 → 文檔格式轉(zhuǎn)換 → 轉(zhuǎn)為 Unix (LF)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容