diff --git a/docs/kickstart/user/exec.md b/docs/kickstart/user/exec.md new file mode 100644 index 0000000..8dc7705 --- /dev/null +++ b/docs/kickstart/user/exec.md @@ -0,0 +1,18 @@ +# kickstart.user.exec user command + +Execute `command` as `user`. +It makes kickstart functions available to be used. +To use variables, like `~`, quote it, otherwise it will be resolved by the current user. + +### Example + +```bash +$ kickstart.user.exec vagrant whoami +vagrant + +$ kickstart.user.exec vagrant kickstart.os +Ubuntu + +$ kickstart.user.exec vagrant 'cd ~; pwd' +/home/vagrant +``` diff --git a/kickstart/recipes/kickstart/user.sh b/kickstart/recipes/kickstart/user.sh index 9ce7960..84a1311 100644 --- a/kickstart/recipes/kickstart/user.sh +++ b/kickstart/recipes/kickstart/user.sh @@ -17,3 +17,16 @@ kickstart.user.remove_group() { IFS=" " read -a groups < <(id -nG $1 | sed "s/$2//") && \ usermod -G `kickstart.print_with_separator , ${groups[*]}` $1 } + +kickstart.user.exec() { + local user=$1 + shift + + local command=$(cat <