#!/bin/bash for arg in User_Id User_Name Home_Dir Group_Id Group_Name Appl_Dir do declare "$arg"="$1" shift done Cmd=$( printf " %q" "$@" | sed -e 's/^ //' -e 's/\\;/;/g') echo "User Add & Exec: User_Id: (${User_Id}) User_Name: [${User_Name}] Home_Dir: [${Home_Dir}] Group_Id: (${Group_Id}) Group_Name: [${Group_Name}] Appl_Dir: [${Appl_Dir}]" echo -n " Display: [${DISPLAY}] Cmd: [${Cmd}]" #i=2 #while [[ $i -le $# ]] #do # echo -n " [${!i}]" # i=$(($i + 1)) #done echo "" echo "" echo "Creating group..." groupadd --gid ${Group_Id} ${Group_Name} echo "Creating user..." if [[ ! -d ${Home_Dir} ]] then home_opts="--create-home" fi useradd 2>/dev/null --uid ${User_Id} --gid ${Group_Id} -m --home-dir ${Home_Dir} ${home_opts} --password "" ${User_Name} echo "Update global profile..." echo -e "export DISPLAY=${DISPLAY}\nexport XDG_RUNTIME_DIR=/run/user/${User_Id}" >/etc/profile.d/x11.sh chown ${User_Name}:${Group_Name} /run/user/${User_Id} echo "Exec Cmd..." #echo "su - -P ${User_Name} -c \"$*\"" su - -P ${User_Name} -c "cd \"${Appl_Dir}\"; ${Cmd}" echo "Completed!"