I've just discovered something totally batshit about sudo on macOS.
Spot the difference..
Linux:
$ ls -la /tmp/wtf
ls: cannot access '/tmp/wtf': No such file or directory
$ echo "touch /tmp/wtf" >> ~/.bashrc
$ sudo bash
# ls -la /tmp/wtf
ls: cannot access '/tmp/wtf': No such file or directory
macOS:
$ ls -la /tmp/wtf
ls: /tmp/wtf: No such file or directory
$ echo "touch /tmp/wtf" >> ~/.bashrc
$ sudo bash
# ls -la /tmp/wtf
-rw-r--r-- 1 root wheel 0 19 Oct 22:58 /tmp/wtf
!!!!!
So when sudo'ing to root it executes ~/.bashrc in the original user's home
directory.. as root?!
Just to make sure I wasn't going crazy or that this wasn't an artefact of my
customised dotfiles I tried it on a fresh 10.13 VM with a fresh user account.
---- Update 19/10 23:16
Turns out this is the default on macOS:
# grep HOME /etc/sudoers
Defaults env_keep += "HOME MAIL"
So when you elevate you retain your home dir and it will execute the dotfiles
there rather than in /var/root/
Madness.