sudowith builtins like
cd. Did you want
sudo sh -c ..instead?
sudo cd /root pwd
sudo sh -c 'cd /root && pwd'
Due to the Unix process model,
sudo can only change the privileges of a new, external process. It can not grant privileges to a currently running process.
This means that shell builtins -- commands that are interpreted by the current shell rather than through program invocation -- cannot be run with
sudo. This includes
read, and others.
Instead you can run a shell with
sudo, and have that shell run the builtins you want. Just be aware that what happens in that shell stays in that shell:
sudo sh -c 'cd /root && pwd' # This shows /root pwd # This shows the original directory
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.