一、在麒麟系统中,如果脚本中使用 docker
命令需要输入密码,通常是因为当前用户没有足够的权限。
推荐方案:将用户加入 docker 用户组(永久解决)
bash
# 1. 创建 docker 用户组(如果不存在)
sudo groupadd docker
# 2. 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 3. 更新用户组(立即生效)
newgrp docker
# 4. 重启电脑 验证(无需 sudo 直接运行)
docker ps
#******************
# 查看当前用户所属组
groups
# 确认 docker 组是否存在
getent group docker
# 检查用户是否在 docker 组中
id -nG | grep docker
原理 :Docker 安装时创建 docker
用户组,组成员可直接操作 Docker 守护进程。
临时方案:配置 sudoers 免密码(特定命令)
没有验证过
bash
# 1. 安全编辑 sudoers 文件
sudo visudo
# 2. 添加以下内容(替换 your_username)
your_username ALL=(ALL) NOPASSWD: /usr/bin/docker
# 3. 脚本中这样使用
sudo docker ps
二、在liunx 中执行 脚本.sh文件方法
右键--打开终端
bash
# 添加可执行权限
chmod +x 脚本.sh
./脚本.sh
在麒麟系统中执行 .sh
脚本时提示 **"未找到命令"**,通常由以下原因导致
1. 文件编码或换行符问题
现象:
脚本在Windows编辑后换行符为 CRLF
,导致Linux无法识别。
解决:
bash
sed -i 's/\r$//' 脚本.sh # 清除Windows换行符
三、 linux/麒麟系统中执行脚本报错 $'\r':未找到命令
这个错误通常是因为你的 Shell脚本(.sh文件)是在Windows环境下编辑的 ,导致换行符是 \r\n
(CRLF),而Linux/麒麟系统只识别 \n
(LF)。因此,\r
被当作命令的一部分,导致 $'\r':未找到命令 错误。
解决方法
**1. 使用 dos2unix
转换文件格式(推荐)**
bashCopy Code
sudo apt install dos2unix # 银河麒麟(Debian系) 或 sudo yum install dos2unix # 中标麒麟(RedHat系) dos2unix 脚本.sh # 转换文件格式 chmod +x 脚本.sh # 确保脚本可执行 ./脚本.sh # 重新运行
2. 手动删除 \r
换行符
bash
sed -i 's/\r$//' 脚本.sh # 删除所有CRLF换行符 chmod +x 脚本.sh ./脚本.sh
3. 用 vim
或 nano
重新保存文件
bash
vim 脚本.sh
- 在
vim
里输入:set ff=unix
,然后:wq
保存退出。
**预防措施(未来避免问题)**
1. 在 Windows 上使用合适的编辑器
- VS Code :右下角切换 CRLF → LF:
- 点击状态栏的 CRLF → 选择 LF。
- Notepad++: 编辑 → 文档格式转换 → 转为 Unix (LF)。