You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Joachim Ansorg edited this page Nov 12, 2021
·
2 revisions
Can't use sudo with builtins like cd. Did you want sudo sh -c .. instead?
Problematic code:
sudo cd /root
pwd
Correct code:
sudo sh -c 'cd /root && pwd'
Rationale:
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