问题
I need to write a bash script to do something as another user and then return to the initial user...
Suppose I run the following as root:
#!/bin/bash
USER=zaraza
su - "${USER}"
#do some stuff as zaraza
________ #here I should logout zaraza
#continue doing things as root
In the console I should write "exit", but in bash is a keyword and it exits the script...
Thanks in advance,
回答1:
Use su -c. From the man page:
su man -c catman Runs the command catman as user man. You will be asked for man's password unless your real UID is 0.
回答2:
The simplest way is to make the stuff that has to run as the other user a separate script and invoke it with the "-c" option in su, like su -c otherscript userid.
You may be able to do that as a "here script" with << EOF, but I've never tried it.
回答3:
You could also use sudo.
回答4:
This will do it.
su - ${username} -c /path/to/the/shellscript.sh
来源:https://stackoverflow.com/questions/2538624/how-to-login-as-another-user-and-then-log-out-in-bash-script