Por que não 'sudo sh' source profile.d scripts

1

Eu tenho uma instalação do CentOS 7, onde / bin / sh é um link simbólico para o bash. No entanto, eles se comportam de maneira diferente quando usam o sudo. Por exemplo, com 'sudo sh':

[[email protected] ~]$ sudo sh
sh-4.2# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin

Com 'sudo bash':

[[email protected] ~]$ sudo bash
[[email protected] centos]# echo $PATH
/opt/puppetlabs/puppet/bin:/sbin:/bin:/usr/sbin:/usr/bin

O elemento PATH extra vem de um /etc/profile.d/-script. Por que não está aparecendo com 'sudo sh'?

    
por thoredge 29.06.2017 / 09:21

1 resposta

2

~/.bashrc sources /etc/bashrc , que então origina /etc/profile.d/* (mas não /etc/profile ?). Não sei se esse comportamento confuso é específico dos sistemas derivados do Redhat ou não.

~/.bashrc é originado pelo bash quando executado como um shell não-login. (Para quando ele é executado como um shell de login, os documentos do bash sugerem você precisa ter certeza de que ~./bashrc é originado manualmente no seu ~/.bash_profile ).

Mas quando você executa sh , ~/.bashrc não é originado. sh não fornece nada a menos que seja executado como um shell de login.

Uma maneira possível de evitar essa confusão é se você preferir sudo -i , que executa um shell de login. O shell usado é escolhido com base no shell do usuário de destino (por exemplo, root por padrão).

    
por 29.06.2017 / 10:40