su -c
or
sudo
.whoami
su
whoami
whoami
sudo whoami
It's commonly believed that su
makes a session run as
another user. In reality, it starts an entirely new shell, independent
of the one currently running your script.
su; whoami
will start a root shell and wait for it to
exit before running whoami
. It will not start a root shell
and then proceed to run whoami
in it.
To run commands as another user, use sudo some command
or su -c 'some command'
. sudo
is preferred
when available, as it doesn't require additional quoting and can be
configured to run passwordless if desired.
If you're aware of the above and want to e.g. start an interactive shell for a user, feel free to ignore this message.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.