一、在麒麟系統(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. 用 vim 或 nano 重新保存文件
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)。