.bashrcé um arquivo de configuração do bash, somente quando é executado interativamente. Ele é carregado apenas quando você inicia o bash, não quando executa outro programa como sh(nem mesmo se o bash for chamado pelo nome sh). E só é carregado quando o bash é interativo, não quando ele está executando um script ou comando -c.
sudo sh -c 'echo $PATH'ou sudo bash -c 'echo $PATH'não invoca um shell interativo, portanto .bashrcnão está envolvido.
sudo su; echo $PATHexecuta uma instância interativa do shell do root. Se isso é bash, então ~root/.bashrcé carregado. Esse snippet é executado echo $PATHassim que o shell interativo termina, portanto, o que quer que aconteça no shell interativo não influencia o que o snippet imprime no final. Mas se você digitar echo $PATHno prompt do shell interativo iniciado sudo su, verá o valor definido por ~root/.bashrc.
Como .bashrcé invocado em cada shell interativo, não por shells de login (nem mesmo por shells de login interativo, que é um defeito de design no bash), é o lugar errado para definir variáveis de ambiente. Use .bashrcpara configurações de bash interativas, como ligações de teclas, aliases e configurações de conclusão. Defina variáveis de ambiente nos arquivos carregados quando você efetua login: ~/.pam_environmentou ~/.profile.
Portanto, defina PATHem .profilevez de .bashrce execute um shell de logon com sudo -i 'echo $PATH', ou explique .profilecom sudo sh -c '. ~/.profile; echo $PATH'.