#!/bin/bash
OLDIFS=$IFS
IFS=","
while read firstname lastname userid
do
sudo useradd -c "${firstname}.${lastname}" -d /home/students/student/"${firstname}.${lastname}" -G students -s /bin/bash "${userid}"
done < hello.csv
答案1
来自手册页:
-m, --create-home Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the -k option) will be copied to the home directory. By default, if this option is not specified and CREATE_HOME is not enabled, no home directories are created.
然而,我会强烈建议不是像 一样,为 $HOME 目录使用用户的真实姓名-d /home/students/student/"${firstname}.${lastname}"
。想想 (真实) 用户名,如“John A. Doe”。他的 $HOME 目录将包含一个空格,这对用户来说并不友好。
答案2
useradd
创建新用户,因此,如果用户已经存在(如问题标题所暗示的),那么它将拒绝创建主目录。
相反,一个人可以调用助手命令
sudo mkhomedir_helper "${userid}"
这将创建 中指定的主目录/etc/passwd
。