You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell Script修改用户名及usermod命令执行报错问题咨询

问题根因

  • 你混淆了passwd和usermod的命令参数:只有passwd支持--stdin参数从标准输入读取密码,usermod命令本身没有--stdin选项,因此代码里的--stdin会被usermod识别为你要设置的新用户名,才会抛出invalid user name '--stdin'的报错。
  • usermod -l的原生语法为 usermod -l <新用户名> <旧用户名>,新用户名直接作为参数传递即可,不需要通过标准输入传值。

修复后的代码

echo "Give me the old username"
read name
echo "Give me the new username"
read new
# 直接传递新用户名参数即可,不需要管道和--stdin
usermod -l "$new" "$name"
# 可选:如果需要同步修改用户家目录名称,可额外执行以下命令
# usermod -d /home/"$new" -m "$new"

注意事项

  • 运行该脚本需要root权限,否则usermod没有修改用户属性的权限。
  • 执行修改用户名操作前建议确认目标用户没有处于登录状态,避免出现进程占用相关的报错。

内容的提问来源于stack exchange,提问作者Jesús Alexis Ramírez Navor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:24:03