sudo with builtins like cd. Did you want
sudo sh -c .. instead?sudo cd /root
pwdsudo 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 cd,
source, 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
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.