Não "parece não funcionar" no caso de sudo apt-get , parece funcionar quando você faz sudo echo $http_proxy .
Quando você insere um comando shell, ele expande e expande todas as variáveis e aliases antes de serem executados.
Então, sudo echo $http_proxy se torna sudo echo http://proxyserver:8080 , que passa bem.
O motivo $http_proxy não é visto por apt-get porque sudo limpa todas as variáveis de ambiente, exceto as que estão explicitamente na lista de permissões em /etc/sudoers com a diretiva env_keep .
Mais informações sobre como manipular a maneira como sudo lida com variáveis de ambiente (ou como, normalmente, não ) podem ser encontradas em man sudoers .